正在显示
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 | ... | ... |
请
注册
或
登录
后发表评论