正在显示
11 个修改的文件
包含
44 行增加
和
139 行删除
@@ -164,7 +164,7 @@ class Api(ApiTemplate): | @@ -164,7 +164,7 @@ class Api(ApiTemplate): | ||
164 | 164 | ||
165 | for i in range(feature_defn.GetFieldCount()): | 165 | for i in range(feature_defn.GetFieldCount()): |
166 | field_defn: FieldDefn = feature_defn.GetFieldDefn(i) | 166 | field_defn: FieldDefn = feature_defn.GetFieldDefn(i) |
167 | - field_name = field_defn.GetName().lower() | 167 | + field_name = field_defn.GetName() |
168 | field_alias = field_name if field_defn.GetAlternativeName() is None or field_defn.GetAlternativeName().__eq__( | 168 | field_alias = field_name if field_defn.GetAlternativeName() is None or field_defn.GetAlternativeName().__eq__( |
169 | "") else field_defn.GetAlternativeName() | 169 | "") else field_defn.GetAlternativeName() |
170 | column = Columns(guid=uuid.uuid1().__str__(), table_guid=table_guid, | 170 | column = Columns(guid=uuid.uuid1().__str__(), table_guid=table_guid, |
@@ -106,6 +106,7 @@ class Api(ApiTemplate): | @@ -106,6 +106,7 @@ class Api(ApiTemplate): | ||
106 | if not ds: | 106 | if not ds: |
107 | raise Exception("打开数据失败!") | 107 | raise Exception("打开数据失败!") |
108 | for i in range(ds.GetLayerCount()): | 108 | for i in range(ds.GetLayerCount()): |
109 | + | ||
109 | layer: Layer = ds.GetLayer(i) | 110 | layer: Layer = ds.GetLayer(i) |
110 | 111 | ||
111 | layer_name[layer.GetName()] = layer.GetName() | 112 | layer_name[layer.GetName()] = layer.GetName() |
@@ -358,12 +358,16 @@ class ThisTask: | @@ -358,12 +358,16 @@ class ThisTask: | ||
358 | feature_defn: FeatureDefn = layer.GetLayerDefn() | 358 | feature_defn: FeatureDefn = layer.GetLayerDefn() |
359 | 359 | ||
360 | for i in range(feature_defn.GetFieldCount()): | 360 | for i in range(feature_defn.GetFieldCount()): |
361 | + | ||
361 | field_defn: FieldDefn = feature_defn.GetFieldDefn(i) | 362 | field_defn: FieldDefn = feature_defn.GetFieldDefn(i) |
362 | field_name = field_defn.GetName() | 363 | field_name = field_defn.GetName() |
364 | + | ||
363 | field_alias = field_name if field_defn.GetAlternativeName() is None or field_defn.GetAlternativeName().__eq__( | 365 | field_alias = field_name if field_defn.GetAlternativeName() is None or field_defn.GetAlternativeName().__eq__( |
364 | "") else field_defn.GetAlternativeName() | 366 | "") else field_defn.GetAlternativeName() |
367 | + | ||
365 | column = Columns(guid=uuid.uuid1().__str__(), table_guid=table_guid, | 368 | column = Columns(guid=uuid.uuid1().__str__(), table_guid=table_guid, |
366 | name=field_name, alias=field_alias, create_time=this_time, update_time=this_time) | 369 | name=field_name, alias=field_alias, create_time=this_time, update_time=this_time) |
370 | + | ||
367 | self.sys_session.add(column) | 371 | self.sys_session.add(column) |
368 | return table_guid | 372 | return table_guid |
369 | 373 |
@@ -250,7 +250,7 @@ class Api(ApiTemplate): | @@ -250,7 +250,7 @@ class Api(ApiTemplate): | ||
250 | 250 | ||
251 | for i in range(feature_defn.GetFieldCount()): | 251 | for i in range(feature_defn.GetFieldCount()): |
252 | field_defn: FieldDefn = feature_defn.GetFieldDefn(i) | 252 | field_defn: FieldDefn = feature_defn.GetFieldDefn(i) |
253 | - field_name = field_defn.GetName().lower() | 253 | + field_name = field_defn.GetName() |
254 | field_alias = field_name if field_defn.GetAlternativeName() is None or field_defn.GetAlternativeName().__eq__( | 254 | field_alias = field_name if field_defn.GetAlternativeName() is None or field_defn.GetAlternativeName().__eq__( |
255 | "") else field_defn.GetAlternativeName() | 255 | "") else field_defn.GetAlternativeName() |
256 | column = Columns(guid=uuid.uuid1().__str__(), table_guid=table_guid, | 256 | column = Columns(guid=uuid.uuid1().__str__(), table_guid=table_guid, |
@@ -337,7 +337,7 @@ class Api(ApiTemplate): | @@ -337,7 +337,7 @@ class Api(ApiTemplate): | ||
337 | # 增加列 | 337 | # 增加列 |
338 | for i in range(feature_defn.GetFieldCount()): | 338 | for i in range(feature_defn.GetFieldCount()): |
339 | field_defn: FieldDefn = feature_defn.GetFieldDefn(i) | 339 | field_defn: FieldDefn = feature_defn.GetFieldDefn(i) |
340 | - field_name = field_defn.GetName().lower() | 340 | + field_name = field_defn.GetName() |
341 | db_columns_names.append(field_name) | 341 | db_columns_names.append(field_name) |
342 | 342 | ||
343 | if field_name not in columns_names: | 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,7 +484,7 @@ def add_spatail_table(database,pg_ds,sys_session,spatial_tables_names,this_time, | ||
484 | 484 | ||
485 | for i in range(feature_defn.GetFieldCount()): | 485 | for i in range(feature_defn.GetFieldCount()): |
486 | field_defn: FieldDefn = feature_defn.GetFieldDefn(i) | 486 | field_defn: FieldDefn = feature_defn.GetFieldDefn(i) |
487 | - field_name = field_defn.GetName().lower() | 487 | + field_name = field_defn.GetName() |
488 | field_alias = field_name if field_defn.GetAlternativeName() is None or field_defn.GetAlternativeName().__eq__( | 488 | field_alias = field_name if field_defn.GetAlternativeName() is None or field_defn.GetAlternativeName().__eq__( |
489 | "") else field_defn.GetAlternativeName() | 489 | "") else field_defn.GetAlternativeName() |
490 | column = Columns(guid=uuid.uuid1().__str__(), table_guid=table_guid, | 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,7 +571,7 @@ def edit_spatial_table(pg_ds,sys_session,spatial_tables,db_tables_names,this_tim | ||
571 | # 增加列 | 571 | # 增加列 |
572 | for i in range(feature_defn.GetFieldCount()): | 572 | for i in range(feature_defn.GetFieldCount()): |
573 | field_defn: FieldDefn = feature_defn.GetFieldDefn(i) | 573 | field_defn: FieldDefn = feature_defn.GetFieldDefn(i) |
574 | - field_name = field_defn.GetName().lower() | 574 | + field_name = field_defn.GetName() |
575 | db_columns_names.append(field_name) | 575 | db_columns_names.append(field_name) |
576 | 576 | ||
577 | if field_name not in columns_names: | 577 | if field_name not in columns_names: |
@@ -12,7 +12,7 @@ import platform | @@ -12,7 +12,7 @@ import platform | ||
12 | import datetime | 12 | import datetime |
13 | import uuid | 13 | import uuid |
14 | from app.util.component.UserCheck import UserCheck | 14 | from app.util.component.UserCheck import UserCheck |
15 | - | 15 | +import requests |
16 | class Api(ApiTemplate): | 16 | class Api(ApiTemplate): |
17 | api_name = "停止任务" | 17 | api_name = "停止任务" |
18 | def para_check(self): | 18 | def para_check(self): |
@@ -35,11 +35,21 @@ class Api(ApiTemplate): | @@ -35,11 +35,21 @@ class Api(ApiTemplate): | ||
35 | exec_result = os.popen('taskkill.exe /pid:' + str(pid)) | 35 | exec_result = os.popen('taskkill.exe /pid:' + str(pid)) |
36 | 36 | ||
37 | else: | 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 | except Exception as e: | 51 | except Exception as e: |
41 | - StructurePrint.print("Kill task 失败") | ||
42 | - raise e | 52 | + StructurePrint().print("Kill task 失败") |
43 | 53 | ||
44 | #处理kill任务后的事情 | 54 | #处理kill任务后的事情 |
45 | self.fix_task(task) | 55 | self.fix_task(task) |
@@ -21,7 +21,9 @@ class Api(ApiTemplate): | @@ -21,7 +21,9 @@ class Api(ApiTemplate): | ||
21 | task_guid = self.para.get("task_guid") | 21 | task_guid = self.para.get("task_guid") |
22 | msg = self.para.get("msg") | 22 | msg = self.para.get("msg") |
23 | task:Task = Task.query.filter_by(guid=task_guid) | 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 | if msg: | 28 | if msg: |
27 | message = "{} {}".format(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), msg) | 29 | message = "{} {}".format(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), msg) |
@@ -38,7 +38,8 @@ class Api(ApiTemplate): | @@ -38,7 +38,8 @@ class Api(ApiTemplate): | ||
38 | state=0, | 38 | state=0, |
39 | task_type=5, | 39 | task_type=5, |
40 | creator=self.para.get("creator"), | 40 | creator=self.para.get("creator"), |
41 | - process="影像创建金字塔中") | 41 | + process="影像创建金字塔中", |
42 | + parameter=self.para.get("url")) | ||
42 | 43 | ||
43 | db.session.add(task) | 44 | db.session.add(task) |
44 | db.session.commit() | 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 | Listen 81 | 1 | Listen 81 |
2 | <VirtualHost *:81> | 2 | <VirtualHost *:81> |
3 | - ServerName 172.26.60.100 | 3 | + ServerName 172.26.60.101 |
4 | WSGIDaemonProcess yourapplication processes=4 threads=16 | 4 | WSGIDaemonProcess yourapplication processes=4 threads=16 |
5 | WSGIScriptAlias / /usr/src/app/run.wsgi | 5 | WSGIScriptAlias / /usr/src/app/run.wsgi |
6 | WSGIPassAuthorization On | 6 | WSGIPassAuthorization On |
@@ -14,7 +14,7 @@ Listen 81 | @@ -14,7 +14,7 @@ Listen 81 | ||
14 | </VirtualHost> | 14 | </VirtualHost> |
15 | Listen 82 | 15 | Listen 82 |
16 | <VirtualHost *:82> | 16 | <VirtualHost *:82> |
17 | - ServerName 172.26.60.100 | 17 | + ServerName 172.26.60.101 |
18 | WSGIDaemonProcess monitormanager processes=1 threads=8 | 18 | WSGIDaemonProcess monitormanager processes=1 threads=8 |
19 | WSGIScriptAlias / /usr/src/app/monitor.wsgi | 19 | WSGIScriptAlias / /usr/src/app/monitor.wsgi |
20 | WSGIPassAuthorization On | 20 | WSGIPassAuthorization On |
@@ -7,7 +7,7 @@ from osgeo import gdal,osr,ogr | @@ -7,7 +7,7 @@ from osgeo import gdal,osr,ogr | ||
7 | from osgeo.gdal import * | 7 | from osgeo.gdal import * |
8 | from osgeo.ogr import * | 8 | from osgeo.ogr import * |
9 | 9 | ||
10 | - | 10 | +import os |
11 | import json | 11 | import json |
12 | 12 | ||
13 | 13 | ||
@@ -65,9 +65,18 @@ def getInfo( path): | @@ -65,9 +65,18 @@ def getInfo( path): | ||
65 | return json.dumps(info) | 65 | return json.dumps(info) |
66 | 66 | ||
67 | if __name__ == '__main__': | 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 |
请
注册
或
登录
后发表评论