django存取空間結構數據

數據庫

這裏使用postgresql數據庫,django使用pgsql須要使用psycopg2-binary模塊sql

PostGIS插件

PostGIS是對象關係型數據庫PostgreSQL的一個插件,PostGIS提供以下空間信息服務功能:空間對象、空間索引、空間操做函數和空間操做符, 包括:點(POINT)、線(LINESTRING)、多邊形(POLYGON)、多點 (MULTIPOINT)、多線(MULTILINESTRING)、多邊形(MULTIPOLYGON)和集合對象集 (GEOMETRYCOLLECTION)等。同時,PostGIS遵循OpenGIS的規範。數據庫

  • 安裝django

    yum install postgis2_96   # 由於安裝的PostgreSQL版本爲9.6,因此是postgis2_96
  • 爲名爲gisdb的數據庫安裝插件函數

    gisdb=# CREATE EXTENSION postgis;
    gisdb=# CREATE EXTENSION postgis_topology;
  • 檢查數據庫安裝的插件post

    \dx  # 查看是否安裝成功插件

     

fields

django爲postgres提供了特殊的model fields,下面只是部分例子spa

from django.db import models
from django.contrib.gis.db.models import PointField
from django.contrib.gis.db.models import PolygonField

class Map(models.Model):
    point_gis = PointField()
    gis_data = PolygonField()

字段寫入

from django.contrib.gis.geos import Point, Polygon
from .models import Map

point = Point(x, y)  # 點座標
gis = Polygon(((x1, y1), (x2, y2), (x3, y3), (x1, y1)))  # 閉合的多邊形區域
Map.objects.create(point_gis=point, gis_data=gis)  

取出字段

point = Map.objects.get(pk=1).point_gis  # Point對象
point = point.coords  # 對象內容,能夠經過索引取出x,y
>>>(x, y)

gis = Map.objects.get(pk=1).gis_data  # Polygon對象
gis = gis_data.coords  # 對象內容,能夠經過循環取索引方式取值
>>>(((x1, y1), (x2, y2), (x3, y3), (x1, y1)),)
相關文章
相關標籤/搜索