提交 29499ea3cf1ebf76ad1eb923f15350753918ecf6

作者 nheweijun
1 个父辈 683cecf9

2022.02.16 修复数据库同步导致属性列名变小写的问题

... ... @@ -164,7 +164,7 @@ class Api(ApiTemplate):
164 164
165 165 for i in range(feature_defn.GetFieldCount()):
166 166 field_defn: FieldDefn = feature_defn.GetFieldDefn(i)
167   - field_name = field_defn.GetName().lower()
  167 + field_name = field_defn.GetName()
168 168 field_alias = field_name if field_defn.GetAlternativeName() is None or field_defn.GetAlternativeName().__eq__(
169 169 "") else field_defn.GetAlternativeName()
170 170 column = Columns(guid=uuid.uuid1().__str__(), table_guid=table_guid,
... ...
... ... @@ -106,6 +106,7 @@ class Api(ApiTemplate):
106 106 if not ds:
107 107 raise Exception("打开数据失败!")
108 108 for i in range(ds.GetLayerCount()):
  109 +
109 110 layer: Layer = ds.GetLayer(i)
110 111
111 112 layer_name[layer.GetName()] = layer.GetName()
... ...
... ... @@ -358,12 +358,16 @@ class ThisTask:
358 358 feature_defn: FeatureDefn = layer.GetLayerDefn()
359 359
360 360 for i in range(feature_defn.GetFieldCount()):
  361 +
361 362 field_defn: FieldDefn = feature_defn.GetFieldDefn(i)
362 363 field_name = field_defn.GetName()
  364 +
363 365 field_alias = field_name if field_defn.GetAlternativeName() is None or field_defn.GetAlternativeName().__eq__(
364 366 "") else field_defn.GetAlternativeName()
  367 +
365 368 column = Columns(guid=uuid.uuid1().__str__(), table_guid=table_guid,
366 369 name=field_name, alias=field_alias, create_time=this_time, update_time=this_time)
  370 +
367 371 self.sys_session.add(column)
368 372 return table_guid
369 373
... ...
... ... @@ -250,7 +250,7 @@ class Api(ApiTemplate):
250 250
251 251 for i in range(feature_defn.GetFieldCount()):
252 252 field_defn: FieldDefn = feature_defn.GetFieldDefn(i)
253   - field_name = field_defn.GetName().lower()
  253 + field_name = field_defn.GetName()
254 254 field_alias = field_name if field_defn.GetAlternativeName() is None or field_defn.GetAlternativeName().__eq__(
255 255 "") else field_defn.GetAlternativeName()
256 256 column = Columns(guid=uuid.uuid1().__str__(), table_guid=table_guid,
... ... @@ -337,7 +337,7 @@ class Api(ApiTemplate):
337 337 # 增加列
338 338 for i in range(feature_defn.GetFieldCount()):
339 339 field_defn: FieldDefn = feature_defn.GetFieldDefn(i)
340   - field_name = field_defn.GetName().lower()
  340 + field_name = field_defn.GetName()
341 341 db_columns_names.append(field_name)
342 342
343 343 if field_name not in columns_names:
... ...
... ... @@ -484,7 +484,7 @@ def add_spatail_table(database,pg_ds,sys_session,spatial_tables_names,this_time,
484 484
485 485 for i in range(feature_defn.GetFieldCount()):
486 486 field_defn: FieldDefn = feature_defn.GetFieldDefn(i)
487   - field_name = field_defn.GetName().lower()
  487 + field_name = field_defn.GetName()
488 488 field_alias = field_name if field_defn.GetAlternativeName() is None or field_defn.GetAlternativeName().__eq__(
489 489 "") else field_defn.GetAlternativeName()
490 490 column = Columns(guid=uuid.uuid1().__str__(), table_guid=table_guid,
... ... @@ -571,7 +571,7 @@ def edit_spatial_table(pg_ds,sys_session,spatial_tables,db_tables_names,this_tim
571 571 # 增加列
572 572 for i in range(feature_defn.GetFieldCount()):
573 573 field_defn: FieldDefn = feature_defn.GetFieldDefn(i)
574   - field_name = field_defn.GetName().lower()
  574 + field_name = field_defn.GetName()
575 575 db_columns_names.append(field_name)
576 576
577 577 if field_name not in columns_names:
... ...
... ... @@ -12,7 +12,7 @@ import platform
12 12 import datetime
13 13 import uuid
14 14 from app.util.component.UserCheck import UserCheck
15   -
  15 +import requests
16 16 class Api(ApiTemplate):
17 17 api_name = "停止任务"
18 18 def para_check(self):
... ... @@ -35,11 +35,21 @@ class Api(ApiTemplate):
35 35 exec_result = os.popen('taskkill.exe /pid:' + str(pid))
36 36
37 37 else:
38   - #分布式下,很难吧,还需要记录机器,分布式是不可行的
39   - os.kill(pid,signal.SIGILL)
  38 + if task.task_type == 5:
  39 + url = "{}/API/Image/TaskKill".format(task.parameter)
  40 + StructurePrint().print(url)
  41 + response: requests.Response = requests.post(url, {"pid":pid})
  42 + if response.status_code == 200:
  43 + if response.json()["result"]:
  44 + pass
  45 + else:
  46 + raise Exception(response.json()["msg"])
  47 + else:
  48 + raise Exception("影像服务器连接失败!")
  49 + else:
  50 + os.kill(pid,signal.SIGILL)
40 51 except Exception as e:
41   - StructurePrint.print("Kill task 失败")
42   - raise e
  52 + StructurePrint().print("Kill task 失败")
43 53
44 54 #处理kill任务后的事情
45 55 self.fix_task(task)
... ...
... ... @@ -21,7 +21,9 @@ class Api(ApiTemplate):
21 21 task_guid = self.para.get("task_guid")
22 22 msg = self.para.get("msg")
23 23 task:Task = Task.query.filter_by(guid=task_guid)
24   - task.update(json.loads(self.para.get("update")))
  24 + update = json.loads(self.para.get("update"))
  25 + update["update_time"] = datetime.datetime.now()
  26 + task.update(update)
25 27
26 28 if msg:
27 29 message = "{} {}".format(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), msg)
... ...
... ... @@ -38,7 +38,8 @@ class Api(ApiTemplate):
38 38 state=0,
39 39 task_type=5,
40 40 creator=self.para.get("creator"),
41   - process="影像创建金字塔中")
  41 + process="影像创建金字塔中",
  42 + parameter=self.para.get("url"))
42 43
43 44 db.session.add(task)
44 45 db.session.commit()
... ...
1   -# coding=utf-8
2   -#author: 4N
3   -#createtime: 2021/7/19
4   -#email: nheweijun@sina.com
5   -
6   -import configure
7   -from app.util.component.ApiTemplate import ApiTemplate
8   -from app.util.component.StructurePrint import StructurePrint
9   -from app.models import db
10   -from app.modules.data.models import Task
11   -import multiprocessing
12   -import uuid
13   -import datetime
14   -import requests
15   -from app.util.component.TaskController import TaskController
16   -from app.util.component.TaskWriter import TaskWriter
17   -class Api(ApiTemplate):
18   -
19   - api_name = "创建影像金字塔"
20   -
21   - def process(self):
22   -
23   - # 返回结果
24   - res = {}
25   - try:
26   - task_guid = uuid.uuid1().__str__()
27   -
28   -
29   - pyramid_process = multiprocessing.Process(target=self.task, args=(task_guid,self.para))
30   - pyramid_process.start()
31   -
32   - task = Task(guid=task_guid,
33   - name="{}构建影像金字塔".format(self.para.get("alias")),
34   - create_time=datetime.datetime.now(),
35   - state=0,
36   - task_type=5,
37   - creator=self.para.get("creator"),
38   - process="影像创建金字塔中",
39   - task_pid=pyramid_process.pid)
40   -
41   - db.session.add(task)
42   - db.session.commit()
43   -
44   - res["data"] = "创建影像金字塔任务已提交!"
45   - res["result"] = True
46   -
47   - except Exception as e:
48   - raise Exception("数据库错误!")
49   -
50   - return res
51   -
52   -
53   - def task(self,task_guid,para):
54   - task_writer = None
55   - try:
56   -
57   - #任务控制,等待执行
58   - TaskController.wait(task_guid)
59   - task_writer = TaskWriter(task_guid)
60   -
61   - task_writer.update_task({"state":2,"update_time":datetime.datetime.now(),"process" : "创建中"})
62   - task_writer.update_process("开始创建...")
63   -
64   - url = "{}/API/Service/Image/BuildPyramid".format(para.get("url"))
65   -
66   - # s = requests.session()
67   - # s.keep_alive = True
68   - # s.post()
69   -
70   - self.para["from"] = configure.deploy_ip_host
71   -
72   - response:requests.Response = requests.post(url,data=self.para)
73   -
74   - if response.status_code==200:
75   - if not response.json().get("result"):
76   - raise Exception("由于{},影像服务修改失败!".format(response.json().get("msg")))
77   -
78   - task_writer.update_task({"state":1,"update_time":datetime.datetime.now(),"process" : "创建完成"})
79   - task_writer.update_process("创建完成!")
80   - else:
81   - raise Exception("影像服务器连接失败!")
82   - except Exception as e:
83   - try:
84   - task_writer.update_task({"state": -1,"update_time":datetime.datetime.now(),"process": "创建失败"})
85   - task_writer.update_process(e.__str__())
86   - task_writer.update_process("任务中止!")
87   - except Exception as ee:
88   - StructurePrint().print(ee.__str__())
89   - raise e
90   - finally:
91   - try:
92   - task_writer.close()
93   - except Exception as e:
94   - StructurePrint().print(e.__str__())
95   -
96   -
97   - api_doc = {
98   - "tags": ["影像服务接口"],
99   - "parameters": [
100   - {"name": "guid",
101   - "in": "formData",
102   - "type": "string",
103   - "description": "guid"},
104   - {"name": "url",
105   - "in": "formData",
106   - "type": "string",
107   - "description": "url"},
108   - {"name": "alias",
109   - "in": "formData",
110   - "type": "string",
111   - "description": "影像alias"},
112   - ],
113   - "responses": {
114   - 200: {
115   - "schema": {
116   - "properties": {
117   - }
118   - }
119   - }
120   - }
121   - }
122   -
1 1 Listen 81
2 2 <VirtualHost *:81>
3   - ServerName 172.26.60.100
  3 + ServerName 172.26.60.101
4 4 WSGIDaemonProcess yourapplication processes=4 threads=16
5 5 WSGIScriptAlias / /usr/src/app/run.wsgi
6 6 WSGIPassAuthorization On
... ... @@ -14,7 +14,7 @@ Listen 81
14 14 </VirtualHost>
15 15 Listen 82
16 16 <VirtualHost *:82>
17   - ServerName 172.26.60.100
  17 + ServerName 172.26.60.101
18 18 WSGIDaemonProcess monitormanager processes=1 threads=8
19 19 WSGIScriptAlias / /usr/src/app/monitor.wsgi
20 20 WSGIPassAuthorization On
... ...
... ... @@ -7,7 +7,7 @@ from osgeo import gdal,osr,ogr
7 7 from osgeo.gdal import *
8 8 from osgeo.ogr import *
9 9
10   -
  10 +import os
11 11 import json
12 12
13 13
... ... @@ -65,9 +65,18 @@ def getInfo( path):
65 65 return json.dumps(info)
66 66
67 67 if __name__ == '__main__':
  68 + data_path = r"E:\Data\矢量数据\广州\广州\dataset.gdb"
  69 +
  70 + driver: Driver = ogr.GetDriverByName("OpenFileGDB")
  71 + ds: DataSource = driver.Open(data_path, 0)
  72 + layer : Layer = ds.GetLayer(0)
  73 +
  74 +
  75 + print(layer.GetMetadata())
  76 + print(layer.GetDescription())
  77 + print(layer.GetStyleTable())
68 78
69   - path = r"E:\Data\zh.gdb"
70   - print(getInfo(path))
  79 + print(ds.GetStyleTable())
71 80
72 81
73 82
... ...
注册登录 后发表评论