編程語言是python,使用的是flask框架
我之前進行postgis數據庫增刪改查的時候一直是自己手動在pg裏面創建空間數據表,然後用sql語句進行操作,覺得也沒什麼,剛開始知道orm的時候覺得這玩意好麻煩,sql語句又不是不能用,還靈活,真正用一下才發現真香。基礎的orm我就不多講了,在這說一下GIS相關的空間表,在這裏我們用的類庫是geoalchemy2
一、建表:
通過代碼就可以創建空間表,不用費勁的手動創建,首先創建db:
from flask_sqlalchemy import SQLAlchemy
db=SQLAlchemy()
from geoalchemy2 import Geometry #需要引入這個
#geo模型
class Polygon(db.Model):
id=db.Column(db.Integer,primary_key=True)
name=db.Column(db.String(128))
geo=db.Column(Geometry('POLYGON'))#空間字段
class Point(db.Model):
id=db.Column(db.Integer,primary_key=True)
name=db.Column(db.String(128))
geo=db.Column(Geometry('POINT'))
class Line(db.Model):
id=db.Column(db.Integer,primary_key=True)
name=db.Column(db.String(128))
geo=db.Column(Geometry('LINESTRING'))
然後執行:
db.create_all()
運行完之後就會發現數據庫中表已經創建完畢啦
二、錄入數據
貌似目前geoalchemy2不支持geojson直接轉換成geo,所以我們在這先用已有的wkt,下面是shp轉換爲wkt的代碼:
https://gitee.com/mingjingzhishui/codes/5rjdzot8hluna1e4wgv7k36
有了wkt之後:
pt=Point(name='1111',geo=wkt)
db.session.add(pt)
db.session.commit()
即可
貼上geoalchemy2官網,讀者們可以去繼續發掘其他操作
https://geoalchemy-2.readthedocs.io/en/latest/