0.0
No commit activity in last 3 years
No release in over 3 years
Model definition for basic RUIAN object persisted in Postgres (loaded by fordfrog/ruian2pgsql)
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.8
~> 10.0
~> 3.4

Runtime

 Project Readme

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