Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GeoDjangoでWeb地図をつくろう

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for mamix1116 mamix1116
November 04, 2018
170

 GeoDjangoでWeb地図をつくろう

FOSS4Gの発表です。

Avatar for mamix1116

mamix1116

November 04, 2018
Tweet

Transcript

  1. Code for CAT $.$'  ! ( WS - ),*

    $%"  NPO PTA#&  +   
  2.   G (myenv)$ django-admin startproject geodjango # G shell

    .- . G P .- < G U _ .- . G S < < W UL G P - . < G S P < G LI R S P _ . < G RI S P
  3.  # A C UI = # LANGUAGE_CODE = 'en-us’

    LANGUAGE_CODE = ‘ja’ E= = ' ' # / geodjango/settings.py
  4.  # PS E 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': 'geo’, }, } L NT E , ' , . : : = :A : : = A # : : = A _[ A I ] D L _[ geodjango/settings.py
  5.    5@ %A>2! C&>2 6C&>2 9; 20052016 1,8453

    *?B%$ B-.,)1C&1 BG(I"#"/84+E" *?B suinanjiko.geojson {"type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ 131.491361 ,34.186589 ] }, "properties": { "no":1, "ym":200504, "pref":" 7)", "river":"J&", "jiko":"C' F  HD 0* & <=", "accurate":"01.:” } }, :
  6. geojson     (myenv)$ python manage.py ogrinspect --srid=4326

    jiko.geojson Suinanjiko # This is an auto-generated Django model module created by ogrinspect. from django.contrib.gis.db import models class Suinanjiko(models.Model): no = models.IntegerField() ym = models.IntegerField() pref = models.CharField(max_length=0) river = models.CharField(max_length=0) jiko = models.CharField(max_length=0) accurate = models.CharField(max_length=0) geom = models.PointField(srid=4326) shell $ python manage.py ogrinspect <> < >
  7. Geojson models.py from django.contrib.gis.db import models class Suinanjiko(models.Model): no =

    models.IntegerField() ym = models.IntegerField() pref = models.CharField(max_length=50) river = models.CharField(max_length=50) jiko = models.CharField(max_length=256) accurate = models.CharField(max_length=256) geom = models.PointField(srid=4326) def __str__(self): return self.jiko # max_length= # str()  
  8.     load_suinanjiko.py import os from django.contrib.gis.utils import

    LayerMapping from map.models import Suinanjiko # Model     mapping = { 'no' : 'no’, 'ym' : 'ym’, : 'geom' : 'POINT’, } #   geojson_file = os.path.abspath( os.path.join(os.path.dirname(__file__), 'data’, 'suinanjiko.geojson’)) #  def run(verbose=True): lm = LayerMapping(Suinanjiko, geojson_file, mapping,transform=False, encoding='UTF-8’) lm.save(strict=True, verbose=verbose)
  9.     (myenv)$ python manage.py shell >>> from

    map import load_Hokkaido >>> load_suinanjiko.run()  Saved : ~~~~ Saved : ~~~~ : >>> exit() shell Django load_suinanjiko.py  
  10.    map/admin.py from django.contrib.gis import admin from map.models

    import Suinanjiko admin.site.register(Suinanjiko, admin.OSMGeoAdmin) #OpenStreetMap geodjango/urls.py # from django.contrib import admin from django.contrib.gis import admin from django.urls import path urlpatterns = [ path('admin/', admin.site.urls), ]
  11. Django REST framework(DRF) (myenv)$ pip install djangorestframework-gis (myenv)$ pip install

    django-filter (myenv)$ pip install markdown (myenv)$ pip freeze : djangorestframework==3.8.2 djangorestframework-gis==0.13 django-filter==1.1.0 Markdown==2.6.11 shell    djangorestframework-gis : DRF    django-filter : "  markdown : Markdown! 
  12.  geodjango/settings.py INSTALLED_APPS = [ 'django.contrib.admin’, 'django.contrib.auth’, : 'django.contrib.gis', 'map',

    'django_filters’, 'rest_framework’, 'rest_framework_gis’, 'markdown', ]     settings.py
  13.  map/ serializers.py from rest_framework_gis import serializers from world.models import

    Suinanjiko Class SuinanjikoSerializer(serializers.GeoFeatureModelSerializer): class Meta: model = Suinanjiko geo_field = 'geom’ fields = ('__all__')    API