GIS objekty (polygony, linie a body) stejneho vyznamu tvori vrtsvy.
Vrstvou muzou byt napr. body v mistech s kontenery na trideni plastu. Dalsi vrstvou jsou napr. body v mistech s kontenery na trideni bioodpadu. Prislusnost k nejake vrstve jednotlive body tridi do skupin. To je dulezite pro vyhledavani. Vrstvy se daji kombinovat v jedne mape a tvorit ruzna komplexni zobrazeni. Rozdeleni do logicky spolu souvisejicich vrstev vektorovych bodu je zasadni. Umoznuje vyhledavat a delat dalsi operace nad prostorovymy objekty.
- POST / - vytvori novou vrstvu
- PUT /:id - upravy vrstvu s danym ID
- GET /:id - vrati info o vrstve s danum ID
- GET / - vrati info o vrstvach podle URL params
- POST /objs/:layerID/ - vytvori novy objekt ve vrstve s danym layerID
- PUT /objs/:layerID/:objID - edituje objekt s danym ID v dane vrstve
- DELETE /objs/:layerID/:objID - dtto operace smazani
Pro ukladani vektoru je pouzit PostGIS jako nejsofistikovanejsi otevrena DB. DB schema ma 2 tabulky:
Pomocí env.vars:
- PORT: port na ktere app pobezi
- USE_CORS: true jestli app pobezi na extra url a bude treba CORS
- DATABASE_URL: connection string do databaze
- NODE_ENV: viz. clanek
- SHARED_SECRET: string_for_securing_JWT_tokens
Idelani pouzit Dockerfile a app ovladat pres docker-compose:
open-js-geo-server:
build: ./repos/open-js-geo-server
image: open-js-geo-server
network_mode: host
container_name: open-js-geo-server
environment:
- PORT=3000
- DATABASE_URL=postgres://username:secret@localhost:5432/moje_db
- SHARED_SECRET=string_for_securing_JWT_tokens
Nejprve ziskejte token pomoci testovaciho auth https://testauth22.herokuapp.com/. Environment variable SHARED_SECRET musite ale nastavit na: verysecretphrase.
SHARED_SECRET=verysecretphrase
Pokus muze vypadat takto:
LOGINDATA='{"uname":"pokus1","passwd":"*"}'
TOKEN=`curl -X POST https://testauth22.herokuapp.com/success/ \
-d $LOGINDATA -H "Content-Type: application/json"`
DATA='{"title":"pokus1","writers":"*","owner":"11"}'
wget -O- --post-data $DATA \
--header='Content-Type:application/json' \
--header="Authorization: Bearer $TOKEN" http://localhost:3001/layers
wget -O- http://localhost:3001/layers | json_pp
eval $(minikube -p minikube docker-env)
docker build . -f dev/Dockerfile -t modularniurad/gis
kubectl apply -f dev/pod.yaml
kubectl port-forward gis 9229:9229
list avail extensions: select * from pg_available_extensions where Name like 'postgis%';
install postgis CREATE EXTENSION postgis;