編程語言是python,使用的是flask框架
我之前進行postgis數(shù)據(jù)庫增刪改查的時候一直是自己手動在pg里面創(chuàng)建空間數(shù)據(jù)表,然后用sql語句進行操作,覺得也沒什么难菌,剛開始知道orm的時候覺得這玩意好麻煩,sql語句又不是不能用蔑滓,還靈活郊酒,真正用一下才發(fā)現(xiàn)真香〖ぃ基礎的orm我就不多講了燎窘,在這說一下GIS相關的空間表,在這里我們用的類庫是geoalchemy2
一蹄咖、建表:
通過代碼就可以創(chuàng)建空間表褐健,不用費勁的手動創(chuàng)建,首先創(chuàng)建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'))
然后執(zhí)行:
db.create_all()
運行完之后就會發(fā)現(xiàn)數(shù)據(jù)庫中表已經(jīng)創(chuàng)建完畢啦
二澜汤、錄入數(shù)據(jù)
貌似目前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官網(wǎng),讀者們可以去繼續(xù)發(fā)掘其他操作
https://geoalchemy-2.readthedocs.io/en/latest/