|
@@ -0,0 +1,41 @@
|
|
|
+# 连接数据库
|
|
|
+import psycopg2
|
|
|
+from psycopg2.extras import DictCursor
|
|
|
+import logging
|
|
|
+
|
|
|
+# 配置日志
|
|
|
+logging.basicConfig(level=logging.INFO)
|
|
|
+logger = logging.getLogger(__name__)
|
|
|
+
|
|
|
+
|
|
|
+conn = psycopg2.connect(
|
|
|
+ dbname="test",
|
|
|
+ user="postgres",
|
|
|
+ password="postgis",
|
|
|
+ host="192.168.100.30",
|
|
|
+ port="5432"
|
|
|
+)
|
|
|
+
|
|
|
+
|
|
|
+def getDiffEwkt(code, ewkt):
|
|
|
+ with conn.cursor(cursor_factory=DictCursor) as cur:
|
|
|
+ # sql = """ SELECT
|
|
|
+ # st_asewkt ( st_difference ( st_geomfromewkt ( %s ), tb.geom ) )
|
|
|
+ # FROM
|
|
|
+ # tb
|
|
|
+ # WHERE
|
|
|
+ # tb."编号" = %s;"""
|
|
|
+ sql="""SELECT
|
|
|
+ st_asewkt ( st_difference ( st_geomfromewkt ( %s ), st_union ( tb.geom ) ) )
|
|
|
+FROM
|
|
|
+ tb
|
|
|
+WHERE
|
|
|
+ st_contains ( st_geomfromewkt ( %s ), tb.geom );"""
|
|
|
+ # complete_sql = cur.mogrify(sql, (ewkt,ewkt,)).decode('utf-8')
|
|
|
+ # logger.info(f"Executing SQL: {complete_sql}")
|
|
|
+ cur.execute(sql, (ewkt,ewkt,))
|
|
|
+ res = cur.fetchone()
|
|
|
+ return res[0]
|
|
|
+# ewkt='SRID=4490;POLYGON ((106.67844989540063 38.207187208754306, 106.67844989540063 38.212680372816806, 106.67295673133813 38.212680372816806, 106.67295673133813 38.207187208754306, 106.67844989540063 38.207187208754306))'
|
|
|
+# getEwkt=getDiffEwkt('6401812024070108270001',ewkt)
|
|
|
+# print(getEwkt)
|