惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
云风的 BLOG
云风的 BLOG
小众软件
小众软件
F
Fortinet All Blogs
爱范儿
爱范儿
WordPress大学
WordPress大学
N
Netflix TechBlog - Medium
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
C
Check Point Blog
博客园 - 聂微东
D
Docker
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
aimingoo的专栏
aimingoo的专栏
Vercel News
Vercel News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
A
About on SuperTechFans
博客园 - 【当耐特】
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog
宝玉的分享
宝玉的分享
Jina AI
Jina AI
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园 - columbus2

用Python作GIS之五:从示例入手—example函数 用Python作GIS之四:Tkinter基本界面的搭建 用Python作GIS之三:入口程序 - stargui.py 用Python作GIS之二:STARS开发环境配置 用Python作GIS之一:介入STARS OpenBlock:针对EveryBlock.com源码的开源拓展项目 EveryBlock源代码 空间数据可视化 GeoDjango教程[2] GeoDjango教程[1] 地理信息技术在现场项目的应用浅析 ESRI and SAP 防卫力量与公共安全:SAP与地理信息的集成 VRML之desk [地图投影之C实现]原数据 [地图投影之C实现]主程序 [地图投影之C实现]PARAMETE.H [地图投影之C实现]BASIC_FU.C 关于地图投影的C程序的一些说明
GeoDjango教程[3]
columbus2 · 2013-01-19 · via 博客园 - columbus2
Geodjango Model API


本文档详细说明了Geodjango Model API,通过本章节,我们将可以使用如下ZIP编码的地
理模型。
from django.contrib.gis.db import models
classZipcode(models.Model):
    code
= models.CharField(max_length=5)
    poly
= models.PolygonField()
    objects
= models.GeoManager()
Geometry的种类 下列每种类均对应于OpenGIS的一种简单地物定义。 GeometryField class GeometryField PointField class PointField LineStringField class LineStringField PolygonField class PolygonField MultiPointField class MultiPointField MultiLineStringField class MultiLineStringField MultiPolygonField class MultiPolygonField GeometryCollectionField class GeometryCollectionField Geometry的属性 除了Django模型的一般属性外,Geometry还具有如下特殊属性。他们都是可选的。 Srid GeometryField.srid 设置SRID(空间参照系统代码)为特定值。默认值为4326(即WGS84坐标系,以经纬度为度 量单位) 选择一个SRID 应当仔细考虑选取一个合适的SRID,这对你的模型很重要。SRID是一个整数,代表了某个 坐标系。而投影往往是和某地的坐标系相关的。虽然geodesy的细节不在这里讨论,但地球 是一个椭球体但表达地球的手段(如地图)却不是那个形状的。 人们一般都习惯于通过经纬度来描述地球上的一个位置。然而,经纬度是角度,而非长度 。换句话说,在平面上两点之间的最短距离是一条直线段,但球面上的亮点最短距离却是 球大圆的一段圆弧。因此,获取球面距离需求额外的计算过程。使用地理坐标系可能带来 后续的麻烦。例如,PostGIS 1.4及以下版本并不能进行非点状物的距离计算,诸如查询在 WGS84坐标系下距离某一县界5英里范围内的点。 投影往往只在某部分区域是最合适应用的。如你知道数据库中的地物范围在北堪萨斯境内 ,则你应当考虑使用适用于当地的投影。此外,投影系是使用长度单位的(如米或英尺) 。 注:如果你要完成非点状物的距离计算,则请安装1.5以上版本的PostGIS。 补充阅读:http://spatialreference.org/ 一个关于Django空间坐标系的数据库 http://welcome.warnercnr.colostate.edu/class_info/nr502/lg3/datums_coordinates /spcs.html 介绍了适用于美国的各类投影系。 Spatial_index GeometryField.spatial_index 默认为True。创建空间索引。 注:空间索引不同于数据库索引。前者创建的是R树,而后者创建的则是B树。 dim GeometryField.dim 用于定义坐标系的维度。默认为2维,支持3维。 注:三维支持需要安装GEOS 3.1,并仅限于PostGIS。 geography GeometryField.geography 如果为True,数据库将创建地理坐标系,而非几何坐标系。 注:需要1.5版本以上PostGIS支持,并且SRID限定于4326。 地理种类 支持地理运算,如 • bboverlaps • coveredby • covers • intersects GeoManager class GeoManager 为了支持地理查询,每个地理模型需要定义一个GeoManager。否则,SQL查询中的地理条件 将是无效的。即使模型 本身没有地理字段,但外键与其他模型字段时,也需要定义 GeoManager。例如下面有一个Address模型外键与一个Zipcode模型。
from django.contrib.gis.db import models
from django.contrib.localflavor.us.models importUSStateField
classAddress(models.Model):
    num
= models.IntegerField()
    street
= models.CharField(max_length=100)
    city
= models.CharField(max_length=100)
    state
=USStateField()
    zipcode
= models.ForeignKey(Zipcode)
    objects
= models.GeoManager()
在Address中仍然需定义GeoManager以便对Zipcode模型进行空间查询。