2012. augusztus 28., kedd

Mysql + qgis

A gis.stackexchange  fórumon, itt találtam egy kérdésfelvetést (és választ), hogy hogyan lehet beolvasni mysql vektor réteget qgis-be.
A válasz szerint a geometriát tartalmazó oszlopnak muszáj GEOMETRY típusúnak lennie. Amúgy a qgis-ben az Add Vector > Database > Type: MySQL útvonalon lehet beregisztrálni, majd elérni az adatbázist.
Annyi plusz dologra kell figyelni, ha nulláról indul a vektor réteg feltöltése, akkor az első geometriát - pont, vonal, poligon - kézzel kell megadni.Illetve itt nincs olyan megkötés, mint a shape fájlok esetében, hogy csak egy típus lehet egy táblán belül, ha vegyes a geometria, van benne pont, vonal és poligon, azt a qgis ugyanúgy megjeleníti. (A GeometryCollection-t viszont itt sem kezeli). 

SET @pont = GeomFromText( 'POINT(1 1)' );
INSERT INTO pontok (the_geom) VALUES ((@pont));

SET @vonal = GeomFromText( 'LINESTRING(0 0,1 1,2 2)' );
INSERT INTO vonalak (the_geom) VALUES ((@vonal));

SET @poligon = GeomFromText( 'POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))' );
INSERT INTO poligonok (the_geom) VALUES ((@poligon));

(Táblák létrehozásához, és a beszúráshoz is, a phpmyAdmin-t használtam, a mysql idevonatkozó dokumentációja itt érhető el, ha a mysql alapból tiltja a távoli hozzáférést, talán ez segít, vagy érdemes xampp-ot használni).



 

Adatok feltöltése:

Az ogr2ogr eszköz segítségével könnyen fel is lehet tölteni térbeli adatokat a mysql szerverre :)
Mivel a mysql alap tároló motorja az InnoDB nem támogatja a térbeli indexeket, az első parancs hibával fog lefutni, azonban a táblát létrehozza, majd a második parancs az -append zászló segítségével feltölti. 

ogr2ogr -f "MySQL" MYSQL:"adatbazis,host=localhost,user=nev,password=jelszo,port=3306" -nln "Megyek" "C:\\M_20_region.shp"

Mivel a fenti parancs leakad a geometria oszlopnál (innodb) kézzel kell felvinni az oszlopokat (kivéve a SHAPE és a FID). Érdemes InnoDB helyett MyISAM tároló motort használni alap tároló motorként. A my.cnf fájlban létre kell hozni egy [mysqld] szekciót, ami alá ki kell írni: default-storage-engine = MyISAM . Amúgy:
 
ogr2ogr -f "MySQL" MYSQL:"adatbazis,host=localhost,user=nev,password=jelszo,port=3306" -nln "Megyek" -append"C:\\M_20_region.shp"

 
 

Nincsenek megjegyzések:

Megjegyzés küldése