forked from nlextract/NLExtract
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
eerste versie Top10NL extract tools en styles
- Loading branch information
Showing
20 changed files
with
5,129 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
Hier staan de tools om Top10NL leveringen van Kadaster (GML) om te zetten naar o.a. PostGIS | ||
en te visualiseren. | ||
|
||
Uitleg | ||
------ | ||
|
||
Top10NL wordt geleverd door Het Kadaster als een .zip file van plm 2GB. Daarin zit weer een zipfile | ||
en een PDF (zie doc/TOP10NL_GML_Bestandswijzer_2011.pdf). | ||
|
||
In de resulterende zipfile, genaamd iets als TOP10NL_GML_blokken_landsdekkend_01-11-2011.zip | ||
zitten plm 110 GML bestanden. Ieder GML bestand komt overeen met een "kaartblad" | ||
(zie doc/TOP10NL_GML_Bestandswijzer_2011.pdf ) met daarin alle Top10NL objecten voor dat gebied. | ||
Er zijn 14 typen Top10NL objecten. Zie ook de beschrijving in doc/structuur-top10nl-0.2.pdf. | ||
|
||
In eerste instantie converteren/laden we de GML naar PostGIS. Dit gebeurt met de GDAL/OGR tool | ||
ogr2ogr. Echter er zijn 2 belangrijke zaken die dit lastig maken: | ||
|
||
- meerdere geometrieen per object, bijv een Waterdeel GML element kan een lijn en een vlak bevatten | ||
- meerdere voorkomens van een attribuut (attribute multiplicity), bijv. een Wegdeel GML element | ||
kan meerdere element-attributen genaamd "nwegNummer" bevatten | ||
|
||
Om het eerste probleem op te lossen worden middels een XSLT script (bin/top10-split-geom.xsl) de GML | ||
elementen uitgesplitst naar geometrie, zodat ieder element een enkele geometrie bevat. Bijvoorbeeld | ||
Wegdeel kent maar liefst 5 geometrie attributen. Dit wordt opgesplitst naar Wegdeel_Lijn, Wegdeel_Vlak etc. | ||
Een nieuw GML bestand wordt hiermee opgebouwd. Vervolgens wordt via ogr2ogr dit uitgesplitste GML bestand | ||
in PostGIS geladen. | ||
|
||
Installatie | ||
----------- | ||
GDAL 1.8 minimaal is vereist. Voor XSLT dient "xsltproc" te worden geinstalleerd. Op Ubuntu | ||
kan dit met apt-get install xsltproc. Op MacOSX kan xsltproc bijv. via MacPorts of andere Unix tools | ||
worden geinstalleerd. | ||
|
||
Testen | ||
------ | ||
Het beste is eerst te testen als volgt: | ||
|
||
- pas bin/top10-settings.sh aan voor je lokale situatie | ||
- maak een lege database aan met PostGIS template bijv. "top10nl" (createdb -T postgis) | ||
- in test/ directory executeer ./top10-test.sh | ||
|
||
Hoe te gebruiken ? | ||
------------------ | ||
Onder bin/ staan shell-scripts om de conversies (ook wel ETL, Extract Transform Load geheten) te doen. | ||
|
||
top10-extract.sh - converteert 1 enkele GML file naar PostGIS, deze roept 2 scripts aan | ||
top10-split.sh - geometrieen uitsplitsen en | ||
top10-ogr2ogr.sh - via ogr2ogr GML in PostGIS laden | ||
|
||
TODO | ||
---- | ||
|
||
Scripts voor Windows. Onder Windows is er een standaard MSDOS tool msxsl.exe beschikbaar. | ||
Zie http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=21714 | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
#!/bin/sh | ||
# | ||
# clean existing tables | ||
# Author: Just van den Broecke | ||
|
||
BASEDIR=`dirname $0`/.. | ||
BASEDIR=`(cd "$BASEDIR"; pwd)` | ||
|
||
. $BASEDIR/bin/top10-settings.sh | ||
psql -d $PG_DB -f $BASEDIR/bin/top10-drop-tables.sql | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
DROP TABLE IF EXISTS wegdeel_vlak; | ||
DROP TABLE IF EXISTS wegdeel_lijn; | ||
DROP TABLE IF EXISTS wegdeel_punt; | ||
DROP TABLE IF EXISTS wegdeel_hartlijn; | ||
DROP TABLE IF EXISTS wegdeel_hartpunt; | ||
DROP TABLE IF EXISTS functioneelgebied_punt; | ||
DROP TABLE IF EXISTS gebouw_vlak; | ||
DROP TABLE IF EXISTS terrein_vlak; | ||
DROP TABLE IF EXISTS waterdeel_lijn; | ||
DROP TABLE IF EXISTS waterdeel_vlak; | ||
|
||
DROP TABLE IF EXISTS geografischgebied_punt; | ||
DROP TABLE IF EXISTS hoogteofdiepte_punt; | ||
DROP TABLE IF EXISTS hoogteverschilhz_lijn; | ||
DROP TABLE IF EXISTS hoogteverschillz_lijn; | ||
DROP TABLE IF EXISTS isohoogte_lijn; | ||
DROP TABLE IF EXISTS kadeofwal_lijn; | ||
DROP TABLE IF EXISTS registratiefgebied_vlak; | ||
DROP TABLE IF EXISTS spoorbaandeel_lijn; | ||
DROP TABLE IF EXISTS spoorbaandeel_punt; | ||
|
||
DROP TABLE IF EXISTS waterdeel; | ||
DROP TABLE IF EXISTS wegdeel; | ||
DROP TABLE IF EXISTS functioneelgebied; | ||
DROP TABLE IF EXISTS gebouw; | ||
DROP TABLE IF EXISTS terrein; | ||
DELETE FROM geometry_columns; | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
#!/bin/sh | ||
# | ||
# Auteur: Just van den Broecke | ||
# Volledig Top10NL GML bestand naar PostGIS brengen. | ||
# pas top10-settings.sh aan voor specifieke opties | ||
|
||
echo "BEGIN top10-extract.sh: `date`" | ||
|
||
BASEDIR=`dirname $0`/.. | ||
BASEDIR=`(cd "$BASEDIR"; pwd)` | ||
|
||
GML_FILE=$1 | ||
GML_FILE_SPLIT=${GML_FILE}.split.gml | ||
|
||
# GML geometrie uitsplitsen met XSLT | ||
$BASEDIR/bin/top10-split.sh $GML_FILE $GML_FILE_SPLIT | ||
|
||
# GML naar bijv. PostGIS met ogr2ogr | ||
$BASEDIR/bin/top10-ogr.sh $GML_FILE_SPLIT | ||
|
||
echo "EIND top10-extract.sh: `date`" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
#!/bin/sh | ||
# Auteur: Just van den Broecke | ||
# ogr2ogr commando executie | ||
# pas top10-settings.sh aan voor specifieke opties | ||
|
||
echo "BEGIN top10-ogr: `date`" | ||
|
||
BASEDIR=`dirname $0`/.. | ||
BASEDIR=`(cd "$BASEDIR"; pwd)` | ||
|
||
. $BASEDIR/bin/top10-settings.sh | ||
|
||
# Transformeren ? | ||
if [ -n "$OGR_TSRS" ] | ||
then | ||
OGR_TSRS="-t_srs $OGR_TSRS" | ||
fi | ||
|
||
echo "ogr2ogr $OGR_OVERWRITE_OR_APPEND -f $OGR_OUT_FORMAT "$OGR_OUT_OPTIONS" $OGR_GT $OGR_OPT_MULTIATTR $OGR_LCO -a_srs $OGR_ASRS $OGR_TSRS -s_srs $OGR_SSRS $1" | ||
ogr2ogr $OGR_OVERWRITE_OR_APPEND -f $OGR_OUT_FORMAT "$OGR_OUT_OPTIONS" $OGR_GT $OGR_OPT_MULTIATTR $OGR_LCO -a_srs $OGR_ASRS $OGR_TSRS -s_srs $OGR_SSRS $1 | ||
|
||
|
||
echo "EIND top10-ogr: `date`" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
#!/bin/sh | ||
# | ||
# Auteur: Just van den Broecke | ||
# | ||
# Instellingen voor top10 tools zoals GDAL ogr2ogr | ||
# Verander voor je eigen omgeving. | ||
|
||
# PostgreSQL/PostGIS database | ||
PG_HOST=localhost | ||
PG_DB=top10nl | ||
PG_PORT=5432 | ||
PG_USER=postgres | ||
PG_PASSWORD=postgres | ||
|
||
# Wat te doen met meervoudig-voorkomende elementen als "nwegnummer" | ||
# 3 mogelijkheden: | ||
# 1) niets doen: wordt char[] array in postgres (OGR_OPT_MULTIATTR leeg) (hier kan bijv GeoServer niet mee omgaan!) | ||
# 2) lijst in 1 enkele string (-fieldTypeToString StringList) | ||
# 3) meerdere kolommen met ieder 1 waarde bijv. typeweg1, typeweg2 etc. (-splitlistfields) (kost aanzienlijk meer processing tijd) | ||
OGR_OPT_MULTIATTR="-fieldTypeToString StringList" | ||
# OGR_OPT_MULTIATTR=-splitlistfields | ||
# OGR_OPT_MULTIATTR= | ||
|
||
# Bron SRS, altijd NL RD epsg:28992 | ||
OGR_SSRS=epsg:28992 | ||
|
||
# Ken deze SRS toe aan resultaat | ||
OGR_ASRS=epsg:28992 | ||
|
||
# Evt transformeren naar bijv Google (epsg:900913) of WGS84 (epsg:4326) | ||
OGR_TSRS= | ||
|
||
# In theorie kunnen we ook naar andere formaten converteren, bijv. ESRI Shape | ||
OGR_OUT_FORMAT=PostgreSQL | ||
OGR_OUT_OPTIONS="PG:dbname=$PG_DB host=$PG_HOST port=$PG_PORT user=$PG_USER password=$PG_PASSWORD" | ||
|
||
# PostgreSQL Layer Creation (-lco) opties | ||
OGR_LCO="-lco PG_USE_COPY=YES -lco PRECISION=NO" | ||
# -lco PGSQL_OGR_FID=fid (werkt niet) | ||
|
||
# Overwrite of append | ||
OGR_OVERWRITE_OR_APPEND="-append" | ||
|
||
# Aantal records per transactie | ||
OGR_GT="-gt 65536" | ||
|
||
# In onderzoek...dit zou de mogelijkheid moeten geven geometrie uit te splitsen zodat we | ||
# de XSLT niet nodig zouden hebben. Werkt in ieder geval niet in GDAL 1.8.1 | ||
# OGR_SQL="-sql "select * from waterdeel where OGR_GEOMETRY = 'LINESTRING'" -dialect OGRSQL" | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
#!/bin/sh | ||
# | ||
# Auteur: Just van den Broecke | ||
# xsltproc commando executie | ||
# pas top10-settings.sh aan voor specifieke opties | ||
|
||
echo "BEGIN top10-split: `date`" | ||
|
||
|
||
BASEDIR=`dirname $0`/.. | ||
BASEDIR=`(cd "$BASEDIR"; pwd)` | ||
|
||
. $BASEDIR/bin/top10-settings.sh | ||
|
||
nice xsltproc --maxdepth 50000 $BASEDIR/bin/top10-split.xsl $1 > $2 | ||
|
||
echo "EIND top10-split: `date`" |
Oops, something went wrong.