2011. február 11., péntek

Adat betöltése, exportálása



1. Postgis adat betöltő, exportáló használata

a). Adatok bevitele

Térbeli adatok bevitelének legegyszerűbb módja az shp2pgsql program használata, amely ESRI
Shape formátumból tud sqlbe konvertálni adatokat.

shp2pgsql -s 23700 -W iso88592 patak_eov_100.shp egyeb_vizfolyasok. patak_eov_100 ekovizig > patak_eov_100.sql

Az 's' kapcsoló adja meg a vetületet, ami alap esetben (-1) – akár van .prj fájl akár nincs. 'W'
kapcsoló adja meg, hogy melyik a helyes karakterkódolás. Ez például a windows – linux
párhuzamos használata esetén fontos, mert míg az ubuntu az utf8-at, a windows a cp1250-et
használja alap beállításként, ami az ő és az ű betűknél hibát okoz, rossz esetben létre sem hozza a
betölthető állományt (vicces az egészben, hogy a postgresql eléggé merev a karakterkódolást
tekintve, így a -W a Warázs kapcsoló:). A 'patak_eov_100 .shp' rész mutat a shape fájlra, az
'egyeb_vizfolyasok.patak_eov_100 ' mondja meg melyik sémában és milyen tábla névvel
szerepeljen az adatbázis kezelőben az adat (ha a sémát nem adjuk meg, akkor az a public lesz). Az
'ekovizig' mondja meg melyik adatbázisba fog kerülni az állomány, a '> patak_eov_100.sql' rész
pedig létrehoz egy betölthető fájlt (egyébként nem feltétlenűl kell külön fájlt létrehozni).

Végül, ha minden megfelelő volt, akkor a következő parancs hiba nélkül lefut:

psql ekovizig -f patak_eov_100.sql

b). Az adatok exportálása

pgsql2shp -f patak_eov_100.shp -h localhost -p 5432 ekovizig patak_eov_100

-f kapcsoló adja meg a létrehozandó fájl nevét, -h és a -p az adatbázishoz való utat mutatja írja le,
ekovizig az adatbázis név, a patak_eov_100 pedig a tábla név. Tábla név helyett lekérdezést is meg
lehet adni, pl 'SELECT * FROM patak_eov_100 WHERE nev LIKE A%', ekkor az A betűvel
kezdődő patakok kerülnek listázásra.
Néha nincs szükség shape létrehozására, elég egy egszerű text fájl, amit a következőképpen lehet létrehozni:
ekovizig=>\o /home/szabobaa/adat.csv
ekovizig=>SELECT ST_ASEWKT(the_geom),attr1,attr2 FROM table;
ekovizig=>\q
Ilyenkor figyelni kell, hogy a lekérdezés fejlécestűl, láblécestűl átkerűl a szövegfájlba.

2. Adatok betöltése text fájlból

Pont szerű adatforrásokat, mint például a mérőkutak, források helyét és az ezekhez kapcsolódó
tulajdonságokat sokszor célszerűbb egy könnyen kezelhető excel táblázatban tartani a több fájlból
álló shape helyett. Az xls, ods formátumokat azonban a postgresql nem tudja értelmezni, így ezeket
be kell olvastatni az adatbáziskezelőbe. Az egyik lehetséges út, hogy csv formátumban fejléc nélkül
exportáljuk a táblát, ügyelve a szöveg jelölők elhagyására („akarmi” helyett akarmi), az
oszlopelválasztók egyértelmű használatára (ne legyen az excel táblázatban sehol pl ';' ) és arra, hogy
ne legyenek üres sorok a csv-ben! Ezután létre kell hozni egy táblát pl:

psql ekovizig -c „CREATE TABLE forrasok (eov_x double precision,eov_y double precision,
name varchar)”

Majd beolvastatni a csv-t:

psql ekovizig -c „\copy forrasok FROM /eleresi/ut/forrasok.csv DELIMITER ';' ”

Ezután a táblához hozzáadni egy egyedi azonosítót és a geometria oszlopot:

ALTER TABLE vizrajz.forrasok ADD COLUMN gid serial PRIMARY KEY;

SELECT AddGeometryColumn(’vizrajz’, ’forrasok’,’the_geom’,23700,’POINT’,2);

Ez utóbbi parancsból a zárójel utáni rész a séma név, tábla név,geometria oszlop elnevezése, srid,
geometria típusa, dimenziója.

Végül:

UPDATE forrasok SET the_geom=ST_SetSRID(ST_MakePoint(eov_x,eov_y),23700);

!!! A postgis AddGeometryColumn funkciója mellett pontot, vonalat, poligont a postgresql is kezeli
a geometry változó típussal!!!


3. Kézi adatfeltöltés

A legritkább esetben van szükség kézi adatbevitelre, így ezt a részt csak megemlítem, hogy ilyet is
lehet, részletekért a postgis manualt kell elolvasni a 33. oldal környékén!:)

INSERT INTO roads (road_id, roads_geom, road_name) VALUES
(1,ST_GeomFromText(’LINESTRING(191232 243118,191108 243242)’,-1),’Jeff Rd’);
forrás: postgis manual 33. oldal


4. Grafikus adatfeltöltés

Sajnos az ESRI szoftverek csak az ArcGis Szerveren keresztül tudnak felcsatlakozni az
adatbáziskezelőkhöz. Ugyan létezik egy zigGis nevű kiegészítés az ArcGis és a postgis közötti
kapcsolat létrehozásához, de a próba verzióval nem voltak túl jó tapasztalataim. Az AutoCad az
FDO betöltő segítségével olvassa és írja a postgis adatbázisokat, de eddig nem láttuk túl sok
értelmét használni bent a cégnél :).
Qgis nagyon jól kezeli a postgist, ahogy a lenti screenshotból is látható könnyű beolvasni az
adatokat, amiket ezután ugyanúgy kell szerkeszteni mint egy shape fájlt.

Nincsenek megjegyzések:

Megjegyzés küldése