当前位置:文档之家› 空间数据可视化

空间数据可视化


下载和安装DJANGO
下载地址:/download/
• 推荐下载官方最新安装包,也可通过Subversion下载最新源码 下载完毕后,解压缩和安装Django
• 解压缩tar格式文件 • 进入Django目录执行命令行:python setup.py install
关于POSTGIS
PostGIS是面向关系数据库PostgreSQL的扩展模块
PostGIS是对PostgreSQL的空间数据格式、操作和功能的扩展 • 快速而简易定位物体相对位置的索引策略 • 一系列投影转换功能,包含不同投影下数据的关联功能 • 基于现有物体互操作下的新物体创建(合并、扩张) 类似PostGIS的工具包括
• 需要本机管理员权限 • Windows、Linux环境下操作相同
创建POSTGIS数据库
如下步骤将创建名为mygeo的PostGIS数据库
• 通过psql客户端连接到PostgreSQL:Create database mygeo; • 命令行输入:PGBASE/bin/createlang plpgsql mygeo • 通过psql加载lwpostgis.sql文件到数据库:PGBASE /bin/psql – d mygeo –f /usr/local/pgsql/share/lwpostgis.sql • 加载EPSG空间坐标系:PGBASE/bin/psql –d mygeo –f /usr/local/pgsql/share/spatial_ref_sys.sql 如果已有创建好的数据库,可通过模板复制:create database usageo with template mygeo; • 上述命令将mygeo复制到usageo,如存储有数据将也被复制
2、使用LayerMapping的save()方法,将数据存储到数据库中
lm.save(verbose=True)
上述存储中需要的传输参数如下(粗体为必需的参数):
空间数据可视化
GEODJANGO空间查询
使用ORGINSPECT 生成模型和地图
既然我们可以通过代码确定数据列、属性以及其他几何属性,那就 表明GeoDjango可以为我们自动生成数据
Orginspect工具可以读取文件,并自动生成LayerMapping和模型
• 一旦获取该工具,只需几步即可使用模型并将数据导入数据库 Orginspect作为参数,自动传入manage.py命令,并获取参数:
• ESRI空间数据引擎(SDE) • Oracle Spatial • MySQL Spatial PostGIS拥有众多拥趸
• 美国海军、陆军,NASA,NOAA等 通过PgRouting可进行路径分析
关于GEODJANGO
GeoDjango是WEB开发框架Django的扩展模块
• GeoDjango提供了一系列模型、类和工具,用于快速创建和部 署地理空间技术WEB应用 类似于Django,GeoDjango设计快捷,应用轻便且性能较高 GeoDjango专注于DRY哲学,即所有知识必须简洁明晰方式表达 GeoDjango在Django基础上增加了部分地理空间技术模型,并配 置了相关数据导入、导出、管理的工具 GeoDjango管理员界面提供了一个OpenLayers接口,用于修改和 管理数据库中的空间数据 用户可通过GeoDjango、PostGIS创建强大应用,无需SQL
• 此命令将模型装入数据库,并引发创建表的命令 可以连接到数据库,确认模型的创建情况 • 注:需要将新应用写入settings.py文件的INSTALL_APPS中
使用LAYERMAPPING 导入数据
1、创建LayerMapping新实例
from django.contrib.gis.utils import LayerMapping from wake.models import *
• 空间数据库
• 目前支持PostgreSQL、MySQL、Oracle Spatial • 推荐PostgreSQL(含PostGIS)
• GeoDjango使用了如下地理空间类库
• GEOS(几何分析) PROJ.4(投影转换) GDAL(空间分析)
空间数据可视化
安装和注册GEODJANGO
安装条件
GEODJANGO部件
GeoDjango包含多个集成部件
• GeoDjango的源代码为Python,运行环境应保证2o一些基础功能,如
• 对象关系映射(ORM)使用户可在Python中定义数据模型,使 用动态数据库API连接和管理数据 • 自动生成的管理员界面,健壮的链接支持 • 内置的模板系统和缓存收集机制 • 多语言支持
空间数据可视化
创建GEODJANGO模型
创建新项目
创建Django时需要注意
• 不要存储在WEB服务器根目录下 • 创建一个新目录存储项目,通过如下命令创建新项目 django-admin.py startproject name
• 其中name代表项目名称 • 命令执行后将创建名为name的子目录,其中包含如下文件 • __init__.py:使Python将此目录识别为包 • manage.py:联系Django的命令行实体 • settings.py:注册项目信息 • urls.py:声明项目链接信息,关联到浏览器输入的地址
一旦创建后,应确认环境是否可以运行
• 输入命令行:python manage.py runserver
• 命令行将启用服务器8000端口 • 可在浏览器中输入命令行返回的URL地址
开发服务器对于开发过程是理想的,可以根据代码变化自动重启
加入GEODJANGO
既然GeoDjango是Django的分支,需要在settings.py文件的 INSTALL_APPS中加入’django.contrib.gis’,以便于地理空间属 性、KML等可用
为了启用带有OpenStreetMaps的GeoDjango管理员界面,必须 为PostGIS安装加入球面默卡托投影,如下: ./manage shell from django.contrib.gis.utils.srs import add_postgis_srs add_postgis_srs(900913) • 请确认对sptail_ref_sys表有读写权限
GEODJANGO数据模型
GeoDjango提供扩展的数据模型,以支持地理空间数据库
• 模型包括:
• • • • PointField\MultiPointField LineStringField\MultiLineStringField PolygonField\MultiPolygonField GeometryCollectionField:可同时包含点、线、面数据
• 空间数据可通过两种方式表达 • 栅格格式:空间上每个点位均有赋值,采用矩阵方式存储 • 矢量格式:存储为点的集合
• 属性数据:说明空间数据的属性信息
矢量格式
PostGIS和GeoDjango均是面向矢量格式的
区别于栅格格式是由像素组成的,矢量格式的基础是线段、弧段 • 线段、弧段由起讫点组成,起讫点之间的点称作为节点 • 存储了节点位置以及拓扑信息 物体由边界定义,而折线由一系列弧段组成 矢量格式下的地理空间数据通过坐标点的集合进行存储,其基础为:
• 每类模型含有两个参数
• Srid:记录空间参照系 • Sptial_index:记录是否创建空间索引(默认为True)
一般而言,数据可以记录到用于自身的数据模型
GEOMANAGER
对于含有空间实体列的模型,为了执行空间查询,必须设置属性 GeoManager
执行空间查询的模型,或关联于执行空间查询模型的模型,均需要 GeoManager • 如果模型未设置GeoManager,且没有空间实体列,则不能执行 空间查询
• 点:物体的零维抽象表达,由一个坐标点组成 • 线:地理事物在形状过细情况下的一维表达 • 面:通常是区域的表达,由线组成了边界,此外常通过边界内 部的一个点来识别一个面
空间参照系
空间参照系包含了投影和大地基准面
• 最先定义了一个椭球体 • 在此基础上定义了大地基准面 • 最后定义了投影及地理坐标 投影关联有地理坐标系 • EPSG预定义了一组空间坐标系,以ID区分 • PostGIS使用SRID表达空间参照 因此无论何时讨论地理空间数据,均包含 • 椭球体 • 大地基准面 • 投影
空间数据可视化
地理信息系统基础知识
什么是GIS
地理信息系统(GIS)用于采集、存储、表达和分析地理空间数据, 以及相关的属性数据
• 地理空间特指具有基准坐标系的地球表面 • GIS工具通过查询(通常基于数据库)来分析空间信息,编辑 数据、地图,表达或存储上述操作结果 多数GIS数据包含两个部分数据 • 空间数据:说明某类几何体的位置或空间分布
空间数据可视化
POSTGIS+GEODJANGO+OPENLAYERS
2011/7/14 shisong.zhu@
目录
地理信息系统的主要任务
地理信息系统基础知识 安装和注册GEODJANGO
创建GEODJANGO模型
导入空间数据 GEODJANGO空间查询 展示地图数据 集成OPENLAYERS 回顾与展望
lm = LayerMapping(model=FireResponse, data=‘shape/wake_FireResponse _2008_12.shp’, mapping=mapping, encoding=‘latin-1’)
上述创建中需要的传输参数如下(粗体为必需的参数):
使用LAYERMAPPING 导入数据
注:目前GeoDjango已经被集成到Django,故安装Django即可
选择数据库
相关主题