美文网首页
使用geoalchemy2进行空间表的建立和空间数据的录入

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

作者: 铭净止水 | 来源:发表于2019-02-03 09:43 被阅读0次

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

    相关文章

      网友评论

          本文标题:使用geoalchemy2进行空间表的建立和空间数据的录入

          本文链接:https://www.haomeiwen.com/subject/zskysqtx.html