1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Django-PostGIS-pgAdmin(Docker-Compose)2

Last updated at Posted at 2023-01-29

Django-PostGIS-pgAdmin(Docker-Compose)2

自分の勉強用備忘メモです。

(注意)利用しているツールについて、古いものがあります。

Django-PostGIS-pgAdmin(Docker-Compose)の追加学習です。
自分用 : Docker folder 13 - 15

実行環境構築

フォルダ構成

C:.
│  docker-compose.yml
│  Dockerfile
└─ requirements.txt

docker-compose.yml

docker-compose.yml
version: "3.9"
services:
  s_database:
      image: postgis/postgis:14-3.3
      container_name: c_postgis
      ports: 
        - "5432:5432"
      volumes:
        - postgres_volume:/var/lib/postgresql/data
      environment:
        POSTGRES_DB: postgres
        POSTGRES_USER: postgres
        POSTGRES_PASSWORD: postgres
        POSTGRES_INITDB_ARGS: "--encoding=UTF-8"
      hostname: postgres
      restart: always
      user: root
  s_pgadmin:
      image: dpage/pgadmin4:5.0
      container_name: c_pgadmin4
      ports:
          - "8001:80"
      volumes:
          - pgadmin4_volume:/var/lib/pgadmin
      environment:
          PGADMIN_DEFAULT_EMAIL: root
          PGADMIN_DEFAULT_PASSWORD: root
      hostname: pgadmin4
      depends_on:
        - s_database
      restart: always
  s_web:
    build: .
    container_name: c_django
    command: python manage.py runserver 0.0.0.0:8000
    ports:
      - "8000:8000"
    volumes:
      - .:/code
    links:
      - s_database
volumes:
  postgres_volume:
    external: true
  pgadmin4_volume:
    external: true
dockerfile
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
requirements.txt
Django
psycopg2

【環境:local】作業フォルダへ移動

powershell
cd C:\[作業フォルダ]

【環境:local】Volumeの作成

powershell
docker volume create postgres_volume
docker volume create pgadmin4_volume

【環境:local】実行する

powershell
docker-compose run s_web django-admin.py startproject composeexample .

フォルダ構成

C:.
│  docker-compose.yml
│  Dockerfile
│  manage.py
│  requirements.txt
│  
└─composeexample
        settings.py
        settings.pyc
        urls.py
        urls.pyc
        wsgi.py
        wsgi.pyc
        __init__.py
        __init__.pyc

設定を修正する

\composeexample\settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 's_database',
        'PORT': 5432,
    }
}

LANGUAGE_CODE = 'ja'

TIME_ZONE = 'Asia/Tokyo'

【環境:local】実行する

powershell
docker-compose up

【環境:local】確認する

http://localhost:8000/

image.png

【環境:c_postgis】PostGISを有効化する

powershell
psql -h 127.0.0.1 -p 5432 -U postgres
sql
CREATE EXTENSION postgis;

【環境:c_postgis】(参考)コマンド

# ユーザー切り替え
su postgres

# ファイル一覧
ls -al
ls -lh

# 現在のパス
pwd

# 移動
cd 移動先

# ファイルの検索
find -name "ファイル名"

# ディレクトリ作成
mkdir ディレクトリ名

# ディレクトリ削除
rm -r

【環境:c_postgis】shp2pgsqlのインストール

apt update
apt -y install postgis

【環境:c_postgis】unzipのインストール

apt-get install zip

【環境:c_postgis】vi(vim)インストール

apt-get install vim

【環境:c_postgis】Zip格納用ディレクトリ作成

cd /tmp
mkdir GIS
cd /tmp/GIS

【環境:local】GISデータのダウンロード

国土数値情報ダウンロードサービス

【環境:local】Zipをコンテナにコピー

ローカルのターミナルから実行
Zipを格納しているフォルダに移動してから実行

docker cp N03-20220101_13_GML.zip c_postgis:/tmp/GIS/N03-20220101_13_GML.zip

(参考)
ローカルのターミナルから実行
コンテナからローカルへ

docker cp c_postgis:/tmp/GIS/N03-20220101_13_GML.zip N03-20220101_13_GML.zip

【環境:c_postgis】作業フォルダに移動

cd /tmp/GIS

【環境:c_postgis】Zipの解凍

unzip N03-20220101_13_GML.zip

【環境:c_postgis】SQL作成

shp2pgsql -p ./N03-22_13_220101 gyosei_kuiki > ./create_gyosei_kuiki.sql
shp2pgsql -W cp932 -a ./N03-22_13_220101 gyosei_kuiki > ./insert_gyosei_kuiki.sql

【環境:c_postgis】SQLを修正

vi create_gyosei_kuiki.sql
SELECT AddGeometryColumn('','gyosei_kuiki','geom','4326','MULTIPOLYGON',2);

【環境:c_postgis】SQL実行

psql -U postgres postgres < ./create_gyosei_kuiki.sql
psql -U postgres postgres < ./insert_gyosei_kuiki.sql

【環境:local】pgAdminで確認

http://localhost:8001/

ターミナルで出力されているIPアドレスでデータベースに接続する。
pgadmin4 | ::ffff:XXX.XXX.XXX.XXX

sql
select * from gyosei_kuiki;

image.png

参考&引用:
クイックスタート・ガイド:Compose と Django
[docker] postgreSQL12 + PostGIS3 環境を作成する
postgreSQLへのshp fileのimport
Docker for WindowsでPostgres+pgAdminのコンテナをたてる
pgAdmin4 v3.3+PostGISがすごい!
国土交通省にあるGISデータをPostGISへインポート(2022年版)
GISっ子/コンテナでshp2pgsql
PostGISで地理空間情報を管理してみた!
AddGeometryColumn
第4章 PostGISを使う: データ管理とクエリ

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?