소스 검색

geojson入库

baoyubo 7 달 전
부모
커밋
e1f5a2adf2
3개의 변경된 파일45개의 추가작업 그리고 2개의 파일을 삭제
  1. 19 1
      database.py
  2. 2 1
      models/__init__.py
  3. 24 0
      models/geojson_base.py

+ 19 - 1
database.py

@@ -35,7 +35,25 @@ def get_db():
 def get_db_local():
     return SessionLocal()
 
-#from database import engine
+from database import engine
+from models.geojson_base import *
+from shapely.geometry import shape
+import json
+db = get_db_local()
+with open('/home/python3/xh_twapi01/utils/spatial/zj_geojson.json', 'r', encoding='utf-8') as file:
+    geojson = json.load(file)
+
+for feature in geojson:
+    name = feature['properties'].get('NAME', '')
+    geom = shape(feature['geometry']).__geo_interface__  # 将Shapely对象转换为GeoJSON
+    properties = feature['properties']
+    db.add(TpZjGeoJSONData(name=name, geometry=geom, properties=properties))
+
+# 提交事务
+db.commit()
+# 关闭会话
+db.close()
+
 #from models.oneshare_base import Base
 #from models.knowledge_base import Base
 #

+ 2 - 1
models/__init__.py

@@ -13,4 +13,5 @@ from .taskRegistration_base import *
 from .video_base import *
 from .yzy_base import *
 from .pattern_base import *
-from .rain_base import *
+from .rain_base import *
+from .geojson_base import *

+ 24 - 0
models/geojson_base.py

@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from sqlalchemy import String, Column, Integer,DateTime,Text,Date,Time,ForeignKey
+from geoalchemy2.types  import Geometry
+from database import Base
+from sqlalchemy.orm import relationship
+from datetime import datetime
+
+
+from sqlalchemy import JSON
+
+class TpZjGeoJSONData(Base):
+    __tablename__ = 'tp_geojson_data_zj'
+    id = Column(Integer, primary_key=True, autoincrement=True)
+    name = Column(String(255))
+    geometry = Column(Geometry('GEOMETRY', srid=4326))
+    properties = Column(JSON)  # 使用JSON类型存储properties
+
+
+class TpCjSqGeoJSONData(Base):
+    __tablename__ = 'tp_geojson_data_cj_sq'
+    id = Column(Integer, primary_key=True, autoincrement=True)
+    name = Column(String(255))
+    geometry = Column(Geometry('GEOMETRY', srid=4326))
+    properties = Column(JSON)  # 使用JSON类型存储properties