使用geoalchemy2进行空间表的建立和空间数据的录入

15 篇文章 0 订阅
2 篇文章 4 订阅

编程语言是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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值