Diskuse:155UZPD Úvod do zpracování prostorových dat

Z GeoWikiCZ
Skočit na navigaci Skočit na vyhledávání

NoSQL

  • NoSQL (Not Only SQL)
  • Objektové, dokumentové DB
    • Key-Value store
    • Document
    • Column oriented (big data, Apache Cassandra nebo HBase)
    • Graph (vztahové)
  • vhodné pro webové aplikace
  • big data
  • objekty pohromadě, žádné JOIN a pod.
  • CAP theorem (MongoDB->one-master vs CouchDB->multi-master), často chybí ACID
  • MongoDB, Cassandra, Redis, CouchDB nebo Neo4J

Mongo

  • postavena na formátu JSON, resp. BSON
  • data členěna do databází a tzv. collections
  • dotazování na bázi JSON
  • podpora pro různé souřadnicové systémy, indexují se ale pouze data v rozsahu lat/lon
  • nevalidní geometrie (self intersect) je vynechána
  • prostorové indexy 2d index, 2dsphere index, Haystack index
  • oblouky -> lomené čáry
  • omezené množství prostorových funkcí, lze řešit využitím externím knihoven, např. turf anebo pymongo+GDAL a pod.

TODO

  • qgis - db manager - font
  • gis1-3 (11) crosses X overlaps
  • gis1-4 (5) optimizalizace
  • gis1-4 (8) zelez 5buf

Sqltutor - Errdata

  • Bocan
    1. Kolik je obcí v ČR, kde mezi lety 1991 a 2001 vzrostl počet obyvatel alespoň o 100%?
      SELECT COUNT(*) FROM cities WHERE (popul01 - popul91) / popul91 > 1.0;
      
      popul - integer
      SELECT count(*) FROM cities WHERE (popul01 - popul91) / cast(popul91 as float) > 1.0;
      
    2. Které obce (vypište jejich název) měli v roce 2002 mezi 4500 a 5000 obyvateli a zároveň leží v Moravskoslezském kraji?

Správa PostGIS

Databáze

createdb -T template_postgis pgis_uzpd
# gis1
pg_dump -Fc -b -v -f gis1.dump -n gis1 template_pgis_student_full
pg_restore -Fc -d pgis_uzpd gis1.dump
# osm
pg_dump -Fc -b -v -f osm.dump -n osm template_pgis_student_full
pg_restore -Fc -d pgis_uzpd osm.dump

Uživatelé

createuser -D -R -S -P <user>
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
CREATE SCHEMA <schema>;
ALTER SCHEMA <schema> OWNER TO <user>;
GRANT ALL ON geometry_columns TO <user>;
GRANT CREATE ON SCHEMA <schema> TO <user>;
GRANT USAGE ON SCHEMA <schema> TO <user>;


Příklad: uzpd_a11

#!/bin/sh

if [ -z $1 ] ; then
    echo "usage: $0 <user>"
    exit 1
fi

USER="$1"
SCHEMA="$1"
GROUP=`echo $USER | cut -d'_' -f2`
DB=pgis_uzpd

createuser -D -R -S -g uzpd -w $1
psql $DB -c "CREATE SCHEMA $SCHEMA;"
psql $DB -c "ALTER SCHEMA $SCHEMA OWNER TO $USER;"

psql $DB -c "GRANT ALL ON geometry_columns TO $USER;"
psql $DB -c "GRANT CREATE ON SCHEMA $SCHEMA TO $USER;"
psql $DB -c "GRANT USAGE ON SCHEMA $SCHEMA TO $USER;"
psql $DB -c "ALTER USER $USER WITH PASSWORD '${GROUP}_uzpd18';"

exit 0