正在显示
5 个修改的文件
包含
126 行增加
和
1 行删除
... | ... | @@ -156,4 +156,6 @@ class ProjectFile: |
156 | 156 | ) |
157 | 157 | |
158 | 158 | project_xml = project_xml.strip() |
159 | + # StructurePrint().print(project_xml) | |
160 | + # StructurePrint().print(str(base64.b64encode(project_xml.encode('utf-8')), encoding="utf8")) | |
159 | 161 | return str(base64.b64encode(project_xml.encode('utf-8')), encoding="utf8") |
\ No newline at end of file | ... | ... |
migration.py
0 → 100644
1 | +# coding=utf-8 | |
2 | +#author: 4N | |
3 | +#createtime: 2022/2/23 | |
4 | +#email: nheweijun@sina.com | |
5 | + | |
6 | +from sqlalchemy import create_engine | |
7 | +from sqlalchemy.orm import sessionmaker,Session | |
8 | +from osgeo import ogr | |
9 | +from osgeo.ogr import * | |
10 | + | |
11 | +class Migration(): | |
12 | + | |
13 | + dmap_dms_ds = None | |
14 | + dmap_server_ds = None | |
15 | + dmap_manager_ds = None | |
16 | + | |
17 | + def __init__(self,dmap_dms_db,dmap_server_db,dmap_manager_db): | |
18 | + | |
19 | + self.dmap_dms_ds : DataSource = self.open_pg_data_source(dmap_dms_db) | |
20 | + self.dmap_server_ds: DataSource = self.open_pg_data_source(dmap_server_db) | |
21 | + self.dmap_manager_ds: DataSource = self.open_pg_data_source(dmap_manager_db) | |
22 | + | |
23 | + | |
24 | + | |
25 | + def process(self): | |
26 | + self.dmap_dms_migration() | |
27 | + self.dmap_server_migration() | |
28 | + | |
29 | + | |
30 | + | |
31 | + def dmap_dms_migration(self): | |
32 | + | |
33 | + database:Layer = self.dmap_dms_ds.ExecuteSQL('select * from "dmdms_database" ') | |
34 | + | |
35 | + | |
36 | + self.dmap_manager_ds.CopyLayer(database,"dmap_database",["OVERWRITE=YES"]) | |
37 | + | |
38 | + | |
39 | + | |
40 | + | |
41 | + def dmap_server_migration(self): | |
42 | + | |
43 | + pass | |
44 | + | |
45 | + | |
46 | + def end(self): | |
47 | + | |
48 | + if self.dmap_dms_ds: | |
49 | + self.dmap_dms_ds.Destroy() | |
50 | + if self.dmap_server_ds: | |
51 | + self.dmap_server_ds.Destroy() | |
52 | + if self.dmap_manager_ds: | |
53 | + self.dmap_manager_ds.Destroy() | |
54 | + | |
55 | + | |
56 | + def open_pg_data_source(self,uri): | |
57 | + """ | |
58 | + # 获取PostGIS数据源 | |
59 | + :return: | |
60 | + """ | |
61 | + db_conn_tuple = self.get_info_from_sqlachemy_uri(uri) | |
62 | + fn = "PG: user=%s password=%s host=%s port=%s dbname=%s " % db_conn_tuple | |
63 | + driver = ogr.GetDriverByName("PostgreSQL") | |
64 | + if driver is None: | |
65 | + raise Exception("打开PostgreSQL驱动失败,可能是当前GDAL未支持PostgreSQL驱动!") | |
66 | + ds = driver.Open(fn, 1) | |
67 | + if ds is None: | |
68 | + raise Exception("打开数据源失败!") | |
69 | + return ds | |
70 | + | |
71 | + def get_info_from_sqlachemy_uri(self,uri): | |
72 | + parts = uri.split(":") | |
73 | + user = parts[1][2:] | |
74 | + | |
75 | + password_list = parts[2].split("@") | |
76 | + if password_list.__len__() > 2: | |
77 | + password = "@".join(password_list[:-1]) | |
78 | + else: | |
79 | + password = parts[2].split("@")[0] | |
80 | + host = parts[2].split("@")[-1] | |
81 | + port = parts[3].split("/")[0] | |
82 | + database = parts[3].split("/")[1] | |
83 | + | |
84 | + return user, password, host, port, database | |
85 | + | |
86 | +if __name__ == '__main__': | |
87 | + | |
88 | + dmap_dms_db = "postgresql://postgres:chinadci@172.26.60.100:5432/dmap_dms" | |
89 | + dmap_server_db = "postgresql://postgres:chinadci@172.26.60.100:5432/DmapServer" | |
90 | + dmap_manager_db = "postgresql://postgres:chinadci@172.26.60.100:5432/migration" | |
91 | + | |
92 | + migration = Migration(dmap_dms_db,dmap_server_db,dmap_manager_db) | |
93 | + migration.process() | |
94 | + migration.end() | |
\ No newline at end of file | ... | ... |
test/zh.py
0 → 100644
1 | + | |
2 | +from osgeo import ogr | |
3 | + | |
4 | +def envelop_2_polygon(env): | |
5 | + ring = ogr.Geometry(ogr.wkbLinearRing) | |
6 | + ring.AddPoint(env[0], env[2]) | |
7 | + ring.AddPoint(env[0], env[3]) | |
8 | + ring.AddPoint(env[1], env[3]) | |
9 | + ring.AddPoint(env[1], env[2]) | |
10 | + ring.AddPoint(env[0], env[2]) | |
11 | + # Create polygon | |
12 | + poly = ogr.Geometry(ogr.wkbPolygon) | |
13 | + poly.AddGeometry(ring) | |
14 | + return poly | |
15 | + | |
16 | + | |
17 | +env = [1,3,1,3] | |
18 | + | |
19 | +poly = envelop_2_polygon(env) | |
20 | +line = ogr.Geometry(ogr.wkbLineString) | |
21 | +line.AddPoint(0, 2) | |
22 | +line.AddPoint(4, 2) | |
23 | +line.AddPoint(5, 2) | |
24 | + | |
25 | +print(poly) | |
26 | +print(line) | |
27 | +print(line.Simplify(1)) | |
\ No newline at end of file | ... | ... |
请
注册
或
登录
后发表评论