ActiveRecord Models for RUIAN Objects in Postgres
RUIAN is Registr územní identifikace, adres a nemovitostí.
See document Struktura a popis výměnného formátu RÚIAN (VFR)
This library defines basics (not all) models, e.g.:
- Vusc (Vyšší územně samosprávný celek)
- Okres
- Orp (Obec s rozšířenou působností)
- Pou (Pověřený obecní úřad)
- Obec
- CastObce
- Momc (Městský obvod / městská část u statutárně členěných měst)
- KatastralniUzemi
- Parcela
- StavebniObjekt
- AdresniMisto
In addition there is AdresniPosta
class which represents list of all
PSČ and their Post Names in ČR (see how to load
data).
You can use rake tasks for manage AdresniPosta
:
rake adresni_posta:create_schema
rake adresni_posta:download
rake adresni_posta:load
Prerequirements
You have to have imported RUIAN data to Postgres:
Create Database
sudo -u postgres psql
create database "ruian";
create role ob with createdb login password 'ob';
GRANT ALL PRIVILEGES ON DATABASE ruian TO ob;
Enable Extension
#DROP EXTENSION postgis CASCADE;
psql -d ruian
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
#additional (not needed?)
#CREATE EXTENSION fuzzystrmatch;
#CREATE EXTENSION postgis_tiger_geocoder;
Compile ruian2pgsql
cd vendor/ruian2pgsql/
sudo apt-get install openjdk-7-jdk
sudo apt-get install maven
mvn package
Download RUIAN data
See Dávkové zpracování obcí following snippet is base upon this chapter.
wget 'http://www.cuzk.cz/CUZK/media/CiselnikyISUI/UI_OBEC/UI_OBEC.zip?ext=.zip' -O UI_OBEC.zip
# dekomprese na standardní výstup
zcat UI_OBEC.zip | \
# vybrat první položku
cut -d';' -f1 | \
# přeskočit první řádek (názvy položek)
sed 1d | \
# přeskočit prázdné řádky
sed '/^\s*$/d' | \
awk '{print "OB_"$1"_UKSH"}' > seznam_obce.txt
echo ST_UKSH >> seznam_obce.txt
mkdir -p RUIAN_DATA
cd RUIAN_DATA
DATE=$(date +%Y%m$(date -d "$(date +%m)/1 + 1 month - 1 day" "+%d"))
for I in $(cat ../seznam_obce.txt); do
wget -N http://vdp.cuzk.cz/vymenny_format/soucasna/$DATE_${I}.xml.gz
done
Convert RUIAN data to PostgreSQL database
java -cp ruian2pgsql-1.6.0-jar-with-dependencies.jar \
com.fordfrog.ruian2pgsql.App --create-tables --db-connection-url \
'jdbc:postgresql://localhost/ruian?user=ob&password=ob' --input-dir \
inputdir --convert-to-ewkt --ignore-invalid-gml
cd vendor/ruian2pgsql/target
java -cp ruian2pgsql-1.6.0-jar-with-dependencies.jar com.fordfrog.ruian2pgsql.App --db-connection-url 'jdbc:postgresql://localhost/ruian?user=ob&password=ob' --input-dir ../../RUIAN_DATA/ --convert-to-ewkt --ignore-invalid-gml --linearize-ewkt
Backup RUIAN db, create schema, misc
You can create empty schema by:
java -cp ruian2pgsql-1.6.0-jar-with-dependencies.jar com.fordfrog.ruian2pgsql.App --db-connection-url 'jdbc:postgresql://localhost/ruian?user=ob&password=ob' --input-dir . --convert-to-ewkt --ignore-invalid-gml --linearize-ewkt --truncate-all
Dump whole ruian db:
pg_dump -d ruian -U ob -Fc > ruian_all.dump # 3,2G
Dump only some tables, to save space:
pg_dump -d ruian -U ob -t 'rn_*' -T 'rn_parcela' -T rn_stavebni_objekt -T rn_adresni_misto -T rn_zpusob_ochrany_pozemku -T rn_bonit_dily_parcel -T rn_zsj -Fc > ruian.dump
Restore DB:
sudo -u postgres psql
create database "ruian";
create role ob with createdb login password 'ob';
GRANT ALL PRIVILEGES ON DATABASE ruian TO ob;
\c ruian
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
bash:
pg_restore -d ruian ruian.dump
How to use
require 'ruian_models`
RuianModles.setup
# Now you can use all modles, e.g.:
puts Obec.cont