之前两篇基本上搭好了geodjango开发的环境了,当然你的电脑上肯定要有python和django的环境(这个我就不介绍了,网上一搜一大堆),我自己用的python3.5和django2.0(毕竟2.0都出来了,我也紧跟时代学学新版本)。

提醒一下:如果不熟悉django的话,要先看一下django的官方文档,可以走一遍他的投票教程(纯新手差不多需要一天吧)

下面说正事:

建立一个虚拟环境(将项目的库于其他项目分离,在其中安装自己的包)

python -m venv myshape_env

激活

source myshape_env/bin/activate

(激活成功后,命令行前端显示你的虚拟环境)

安装django:

pip install django

新建一个项目:

django-admin startproject geodjango

新建一个应用:

cd geodjango

python manage.py startapp world

配置项目geodjango下的setting.py

需要引入的应用(加入自己缺的)

# Application definition
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.gis',
    'world',

]

数据库配置:(注释掉原来sqlite3的配置,添加和自己数据库符合的配置,以下是我的)

# Database
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases
DATABASES = {
    'default': {
        #'ENGINE': 'django.db.backends.sqlite3',
        #'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE':'django.contrib.gis.db.backends.postgis',
        'NAME': 'geodjango',
        'USER': 'postgres',
        'PASSWORD':'123',
        'HOST':'localhost',
        'PORT':'5432',
    }
}

空间数据:http://thematicmapping.org/downloads/TM_WORLD_BORDERS-0.3.zip

mkdir world/data

cd world/data

wget http://thematicmapping.org/downloads/TM_WORLD_BORDERS-0.3.zip

unzip TM_WORLD_BORDERS-0.3.zip

cd ../..

以下是数据(感兴趣的同学可以自己查询不同格式数据的作用)

用ogrinfo来检测数据

1.ogrinfo world/data/TM_WORLD_BORDERS-0.3.shp

2.ogrinfo -so world/data/TM_WORLD_BORDERS-0.3.shp TM_WORLD_BORDERS-0.3

定义空间数据模型:(模型字段和上面特征字段对应)

from django.contrib.gis.db import models
# Create your models here.

class WorldBorder(models.Model):
    # Regular Django fields corresponding to the attributes in the
    # world borders shapefile.
    name = models.CharField(max_length=50)
    area = models.IntegerField()
    pop2005 = models.IntegerField('Population 2005')
    fips = models.CharField('FIPS Code', max_length=2)
    iso2 = models.CharField('2 Digit ISO', max_length=2)
    iso3 = models.CharField('3 Digit ISO', max_length=3)
    un = models.IntegerField('United Nations Code')
    region = models.IntegerField('Region Code')
    subregion = models.IntegerField('Sub-Region Code')
    lon = models.FloatField()
    lat = models.FloatField()

# GeoDjango-specific: a geometry field (MultiPolygonField)
    mpoly = models.MultiPolygonField()

# Returns the string representation of the model.
    def __str__(self):              # __unicode__ on Python 2
        return self.name

数据迁移:

python manage.py makemigrations

python manage.py migrate

可以在pgadmin3看到已经生成world_worldborder表

导入数据:在world应用下面新建一个load.py

import os
from django.contrib.gis.utils import LayerMapping
from .models import WorldBorder

# Create your views here.
world_mapping = {
    'fips' : 'FIPS',
    'iso2' : 'ISO2',
    'iso3' : 'ISO3',
    'un' : 'UN',
    'name' : 'NAME',
    'area' : 'AREA',
    'pop2005' : 'POP2005',
    'region' : 'REGION',
    'subregion' : 'SUBREGION',
    'lon' : 'LON',
    'lat' : 'LAT',
    'mpoly' : 'MULTIPOLYGON',
}

world_shp = os.path.abspath(
    os.path.join(os.path.dirname(__file__), 'data', 'TM_WORLD_BORDERS-0.3.shp'),
)

def run(verbose=True):
    lm = LayerMapping(
        WorldBorder, world_shp, world_mapping,
        transform=False, encoding='iso-8859-1',
    )
    lm.save(strict=True, verbose=verbose)

world_mapping字典中的每个键都对应于WorldBorder模型中的字段。值是加载数据的shapefile字段的名称。

执行:

python manage.py shell

>>> from world import load
>>> load.run() 后台管理空间数据:
在项目中admin.py注册模型
from django.contrib.gis import admin
from .models import WorldBorder admin.site.register(WorldBorder, admin.GeoModelAdmin) 创建超级用户:
python manage.py createsuperuser
(需要输入用户名,密码)
python manage.py runserver
看一下效果:

以上只是一个简单的测试练习,我会不定期更新(有疑问可以留言),大家一起学习

 
 
												

ubuntu16.04搭建geodjango+postgresql+postgis的WebGIS框架(三)加载空间数据的更多相关文章

  1. ubuntu16.04搭建geodjango+postgresql+postgis的WebGIS框架(一)安装第三方空间库

    postgis是postgresql的空间扩展对象,它需要一些第三方库的支持.包括GEOS, PROJ.4 和 GDAL.我们首先安装这几个空间库. 在ubuntu系统终端执行:(预先装一些依赖的库) ...

  2. ubuntu16.04搭建geodjango+postgresql+postgis的WebGIS框架(二))安装postgresql和postgis

    卸载老版本sudo dpkg --purge postgis postgresql-9.3-postgis1.安装postgresql sudo apt-cache search postgresql ...

  3. Ubuntu16.04搭建OpenVPN

    Ubuntu16.04搭建OpenVPN 2018年12月27日 15:50:59 VinQin 阅读数:21042   简介 如果在一个非信任网络下比如旅社或者咖啡店的WiFi网络下,想要通过你的智 ...

  4. Ubuntu16.04搭建LAMP开发环境

    Ubuntu16.04搭建LAMP开发环境 虚拟机上安装好Ubuntu16.04后,是一台空白的Ubuntu.我的目的是搭建LAMP环境,顺便搭一个Python Django环境. 基本设置 1.配置 ...

  5. Diycode开源项目 搭建可以具有下拉刷新和上拉加载的Fragment

    1.效果预览 1.1.这个首页就是一个Fragment碎片,本文讲述的就是这个碎片的搭建方式. 下拉会有一个旋转的刷新圈,上拉会刷新数据. 1.2.整体结构 首先底层的是BaseFragment 然后 ...

  6. Harbor 企业级私有仓库 Ubuntu16.04 搭建及使用

    一.Harbor简介 1.1.什么是Harbor 几个VMware中国的人搞了一个容器镜像仓库.Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器. 1.2.Harbor架 ...

  7. ubuntu16.04搭建个人简易DLP

    前言 最近一朋友让我帮忙搭建一台服务器,用做公司的服务器,但是该服务器需要满足一些安全要求,于是乎就有了下面的解决过程^_^ 需求 期望普通用户和管理员都能ssh登陆服务器,但禁止scp或者其他方式下 ...

  8. TestLink+Jenkins在Ubuntu16.04搭建集成测试环境

    序章 序1:TestLink和TestLink-API-Python-client 目前TestLink的最新版本是1.9.19 TestLink-API-Python-client支持的TestLi ...

  9. ubuntu16.04搭建ftp服务器

    因为习惯了vs进行开发,所以对于Linux的代码编辑开发都在vs里面进行,通常我们都是ssh远程登录到Linux,使用ftp或者sftp共享Linux目录里面的文件方便对文件的共享,这里介绍一下在ub ...

随机推荐

  1. C/C++基础----特殊工具和技术 (重载new和delete,RTT,限定作用域的枚举类型,类成员指针,嵌套类,局部类,volatile,链接指示 extern “C”)

    重载new和delete 1调用operator new( 或new[])标准库函数分配足够大的.原始的.未命名的内存空间以便存储特定类型的对象 2编译器运行相应地构造函数以构造这些对象,并为其传入初 ...

  2. Elasticsearch Internals: Networking Introduction An Overview of the Network Topology

    This article introduces the networking part of Elasticsearch. We look at the network topology of an ...

  3. Python使用plotly绘制数据图表的方法

    转载:http://www.jb51.net/article/118936.htm 本篇文章主要介绍了Python使用plotly绘制数据图表的方法,实例分析了plotly绘制的技巧. 导语:使用 p ...

  4. Java学习——加法器

    package cys; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.aw ...

  5. 开发框架-.Net:Learun(力软敏捷开发)

    ylbtech-开发框架-.Net:Learun(力软敏捷开发) 1.返回顶部   2.返回顶部 1. 系统简介:(1)后台采用MVC+EF架构,前台使用Jquery+Bootstrap,界面美观大气 ...

  6. Tomcat7启动分析(三)Digester的使用(转载)

    原文 http://tyrion.iteye.com/blog/1912290 前一篇文章里最后看到Bootstrap的main方法最后会调用org.apache.catalina.startup.C ...

  7. windows修改远程桌面端口3389

    regedit 按照路径打开,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-T ...

  8. Oracle 锁的概念

    用scott/orcl登录并且模拟数据 SQL> conn scott/orclConnected.SQL> create table tt(id int primary key); Ta ...

  9. ViewPager系列之 仿魅族应用的广告BannerView

    转自:https://juejin.im/post/5933c65d0ce463005717cbe9 前言 Banner广告位是APP 中的一个非常重要的位置,为什么呢?因为它能带来money.是一个 ...

  10. android studio AIDL 编译时 错误:找不到符号

    原贴路径:http://blog.csdn.net/baidu_30164869/article/details/51036405 PS:在android studio中 当将java文件放到aidl ...