PG WORKSHOP

OGR2OGR scripts

Inlæsning af tabeller fra E&M databasen

Opret fil og indsæt følgende som aktiverer de korrekte miljøvariable i en fælls fil eks. setenv.bat

@echo off
@echo Setting environment for using the GDAL Utilities.
set SDK_ROOT=D:\spatialsuite\app\mapserver\v6.4.1-64bit
set SDK_ROOT=%SDK_ROOT:\\=\%
SET "PATH=%SDK_ROOT%;%PATH%"
SET "GDAL_DATA=%SDK_ROOT%share/gdal"
SET "GDAL_DRIVER_PATH=%SDK_ROOT%plugins"
SET "PROJ_LIB=%SDK_ROOT%shareproj"
SET "PYTHONPATH=%SDK_ROOT%python"
SET PGUSER=<USERNAME>
SET PGPASSWORD=<PASSWORD>
SET PGCLIENTENCODING=LATIN1
rem aktivér miljøvariable
CALL setenv.bat

REM Hent  JR49003V m.fl. fra E&M databasen
ogr2ogr.exe -overwrite  -f "postgresql" PG:"host=udcgis schemas=emdb"^
 ODBC:<USERNAME>/<PASSWORD>@emdb,JR49003V,JY72000V,JY70100V,JY71000V,JY73200V,QL52500V,QL23600V^
 --DEBUG ON -lco OVERWRITE=YES -lco PRECISION=NO
IF ERRORLEVEL 1 goto error

REM IF we get here everything was ok
goto end


:error
echo der er sket en fejl
exit 1

:end
echo alt gik fint den %date% kl %time%

exit 0

Scripttet kan udvides med mere fejlhåndtering. Derudover kan der indsættes kommentarer på tabellen med seneste indlæsningsdato så man fra PGADMIN kan se på tabellerne, hvornår seneste dataindlæsning stammer fra eller skrive på tabellen at seneste indlæsning ikke er indlæst pga fejl. Derved er det ikke nødvendigbt at kigge i logfiler. Scriptet kan også udvides med funktioner til at sende emails når et script er stoppet pga en fejl (exit 1).

Export af data fra postgis til ArcGIS (born_familie.gdb)

REM Kopierer tabeller fra PostGIS til ERI FileGDB
CALL D:\scripts\emdb2pg\setenv_k510_test.bat

ogr2ogr.exe -overwrite  -f "FileGDB" output/born_familie.gdb ^
  PG:"host=udcgis schemas=born_familie tables=elev_befordring,fs_bevtoft_over_jerstal" ^
   --DEBUG ON -lco OVERWRITE=YES -lco PRECISION=NO

IF ERRORLEVEL 1 goto error

REM IF we get here everything was ok
goto end


:error
echo der er sket en fejl
exit 1

:end
echo alt gik fint den %date% kl %time%

exit 0

Bemærk at man kan angive et schema og et antal tabeller i forbindelsestrengen til PostgreSQL. Tegnet (hat) "^" anvendes til at opdele kommandoen over flere linjer

Udtræk tabeller med klippepolygon

REM Kopierer tabeller fra PostGIS til ERI FileGDB og klipper med geomtrier fra matikelnumre 45
CALL D:\scripts\emdb2pg\setenv_k510_test.bat

ogr2ogr.exe -overwrite  -f "FileGDB" output/clipFOT.gdb^
 PG:"host=udcgis schemas=hojdekurver tables=hojdekurver"^
 -clipdstsql "SELECT st_union(wkb_geometry) FROM matrikel.fredskov_flad WHERE matrnr ='45'"^
 -nlt MULTILINESTRING --DEBUG ON -lco OVERWRITE=YES -lco PRECISION=NO
IF ERRORLEVEL 1 goto error

ogr2ogr.exe -overwrite  -f "FileGDB" output/clipFOT.gdb^
    PG:"host=udcgis schemas=fot tables=fot_bygning,fot_vejmidte"^
    -clipdstsql "SELECT st_union(wkb_geometry) FROM matrikel.fredskov_flad WHERE matrnr ='45'"^
    --DEBUG ON -lco OVERWRITE=YES -lco PRECISION=NO
IF ERRORLEVEL 1 goto error

REM IF we get here everything was ok
goto end

:error
echo der er sket en fejl
exit 1

:end
echo alt gik fint den %date% kl %time%

exit 0

Konvertér jordstykke til polygon

ogr2ogr.exe -overwrite  -f "FileGDB" output/skellinje.gdb^
 PG:"host=udcgis schemas=matrikel"^
 -sql "SELECT st_boundary(wkb_geometry)::geometry(MULTILINESTRING, 25832) as skellinje FROM matrikel.jordstykke"^
 -nln skellinjer^
 -nlt MULTILINESTRING

Bemærk cast af gemetritypen med -nlt (New Layer Type)