使用geoalchemy2進行空間表的建立和空間數據的錄入

編程語言是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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章