<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>http://gis.inf.elte.hu/giswiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Henrietta</id>
	<title>GIS Wiki - Szerkesztő közreműködései [hu]</title>
	<link rel="self" type="application/atom+xml" href="http://gis.inf.elte.hu/giswiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Henrietta"/>
	<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/wiki/Speci%C3%A1lis:Szerkeszt%C5%91_k%C3%B6zrem%C5%B1k%C3%B6d%C3%A9sei/Henrietta"/>
	<updated>2026-05-09T12:12:58Z</updated>
	<subtitle>Szerkesztő közreműködései</subtitle>
	<generator>MediaWiki 1.31.7</generator>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=272</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=272"/>
		<updated>2016-06-30T21:13:02Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt &lt;br /&gt;
könyvtárakhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek a funkciók. Az alkalmazásprogramozási felület (API) általában pontosan követi a GDAL és OGR könyvtárak C++  implementációiban használt osztályok és eljárások megnevezéseit. &lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
A GDAL/OGR könyvtárak használatához a következőkre van szükség:&lt;br /&gt;
*    Python 2.X (Python 3.X a GDAL 1.7.0 verziójától kezdődően). Python 2-höz ajánlott 2.3 és 2.7 közötti verziót használni.&lt;br /&gt;
*    libgdal (1.5.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (gdal-devel)&lt;br /&gt;
*    numpy (1.0.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (numpy-devel)&lt;br /&gt;
A numpy telepítése nem feltétlenül szükséges, viszont sok példaprogram és eszköz használja, ezért ajánlott.&lt;br /&gt;
&lt;br /&gt;
=== GNU/Linux ===&lt;br /&gt;
A GDAL/OGR könyvtár és a Python kötések telepítését elvégezhetjük [https://docs.python.org/2/library/distutils.html distutils] vagy [https://pypi.python.org/pypi/setuptools setuptools] segítségével (az utóbbi használata ajánlott). Setuptools-t használva a telepítést a következő paranccsal végezhetjük el:&lt;br /&gt;
&lt;br /&gt;
 $ sudo easy_install GDAL&lt;br /&gt;
&lt;br /&gt;
Ha nem szeretnénk feltétlenül a legfrissebb verziót használni és megelégszünk az adott Linux disztribúció repozitóriumában fellelhető verzióval, akkor talán legegyszerűbb a csomagkezelőt használni a telepítésre. Ubuntu operációs rendszeren például a következő paranccsal telepíthető a GDAL/OGR könyvtárak Python kötése:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install gdal-bin python-gdal&lt;br /&gt;
&lt;br /&gt;
Ha [https://trac.osgeo.org/gdal/wiki/DownloadSource forrásból] szeretnénk lefordítani a legújabb verziót, akkor a Python kötéshez a &amp;lt;code&amp;gt;--with-python&amp;lt;/code&amp;gt; kapcsolót kell használni:&lt;br /&gt;
&lt;br /&gt;
 $ ./configure --with-python&lt;br /&gt;
&lt;br /&gt;
Ezután a szokásos módon a &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; eszköz elvégzi a fordítást és a telepítést:&lt;br /&gt;
&lt;br /&gt;
 $ make&lt;br /&gt;
 $ make install&lt;br /&gt;
&lt;br /&gt;
A két könyvtár Python kötését a [http://www.swig.org/index.php SWIG] eszköz segítségével generálják. Az elérhető hivatalos dokumentáció (http://gdal.org/python) is automatikusan generált, a meglévő C/C++ függvények leírásai alapján. &lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
A GDAL/OGR könyvtár Python kötésének telepítéséhez a következő lépésekre lesz szükség:&lt;br /&gt;
* [http://download.osgeo.org/gdal/win32/1.6/ GDAL Windows bináris fájlok] letöltése és kicsomagolása. Alapesetben csak a gdalwin32exe160.zip nevű fájlra lesz szükség. A könyvtárban fellelhető többi fájl bővítmények fejlesztéséhez szükséges. A zip fájlt bárhova ki lehet csomagolni, példa gyanánt a &amp;lt;code&amp;gt;C:\gdalwin32-1.6&amp;lt;/code&amp;gt; könyvtárat fogjuk használni. A kicsomagolás után a &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt; rendszerváltozót [http://www.computerhope.com/issues/ch000549.htm módosítani] kell, hozzá kell adni a &amp;lt;code&amp;gt;C:\gdalwin32-1.6\bin&amp;lt;/code&amp;gt; elérési útvonalat.&lt;br /&gt;
* Létre kell hozni a &amp;lt;code&amp;gt;GDAL_DATA&amp;lt;/code&amp;gt; nevű rendszerváltozót, aminek az értéke az adatokat tartalmazó könyvtár neve, jelen esetben &amp;lt;code&amp;gt;C:\gdalwin32-1.6\data&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Szükséges lehet az operációs rendszer újraindítása.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
A GDAL Python kötésében öt főmodult érhetünk el a következő módon:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import ogr&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import osr&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal_array&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdalconst&lt;br /&gt;
&lt;br /&gt;
=== Buktatók ===&lt;br /&gt;
&lt;br /&gt;
Annak ellenére, hogy a Python kötések használata teljesen elrejti a mögöttes C++ könyvtárat, használata pár apró dologban mégis eltér a megszokott Python modulok használatától, amire érdemes figyelnie a Python programozónak:&lt;br /&gt;
&lt;br /&gt;
==== A Python kötés nem használ kivételeket ====&lt;br /&gt;
&lt;br /&gt;
A Python kötés alapértelmezetten nem használja a kivételeket, ehelyett meghatározott hibaértéket térít vissza az adott függvény, és egy hibaüzenet jelenik meg a standard kimeneten. Például ha egy nemlétező fájlt próbálunk megnyitni, ez az alapértelmezett működés:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.Open(&amp;#039;/home/user/nincsilyen.img&amp;#039;)&lt;br /&gt;
 ERROR 4: `/home/user/nincsilyen.img&amp;#039; does not exist in the file system,&lt;br /&gt;
 and is not recognised as a supported dataset name.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ha mégis használni szeretnénk a kivételeket, akkor ezeket explicit módon engedélyezni kell az &amp;lt;code&amp;gt;UseExceptions()&amp;lt;/code&amp;gt; meghívásával. &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.UseExceptions()        # Kivetelek engedelyezese&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.Open(&amp;#039;/home/user/nincsilyen.img&amp;#039;)&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
 RuntimeError: `/home/user/nincsilyen.img&amp;#039; does not exist in the file system,&lt;br /&gt;
 and is not recognised as a supported dataset name.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez megkötés a visszamenőleges kompatibilitás miatt szükséges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== A Python összeomlik, ha egy olyan objektumot használunk, ami összefügg egy már előzőleg törölt objektummal ====&lt;br /&gt;
&lt;br /&gt;
A GDAL és OGR objektumok valójában C++ objektumok, amik mutatókkal kapcsolódnak egymáshoz. Megtörténhet, hogy a Python garbage collector felszabadítja egy objektum tárhelyét (vagy a programozó töröl egy objektumot &amp;lt;code&amp;gt;del&amp;lt;/code&amp;gt;-lel), miközben egy másik objektum mutatóval hivatkozik rá. Ilyenkor a Python összeomlik. A következő példában egy bemeneti állományt megnyitva létrehozunk egy objektumot, majd egy másikat, ami a háttérben hivatkozik az elsőre (C++ mutatóval). Ezután kitöröljük az első objektumot és meghívjuk a másodiknak egy metódusát. Ennyi elég ahhoz, hogy a Python összeomoljon.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; adat = gdal.Open(&amp;#039;/home/user/valami.img&amp;#039;)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; band = adat.GetRasterBand(1) # Egy uj objektum letrehozasa, ami kapcsolatban van az adat objektummal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; del adat           # Toroljuk az adat objektumot&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; band.GetMinimum();    # A band objektum egy metodusanak hivasa es a Python osszeomlik&lt;br /&gt;
 Segmentation fault (core dumped)&lt;br /&gt;
&lt;br /&gt;
A következő példában a garbage collector törli automatikusan az &amp;lt;code&amp;gt;osgeo.gdal.Dataset&amp;lt;/code&amp;gt; típusú objektumot még mielőtt a &amp;lt;code&amp;gt;GetMinimum()&amp;lt;/code&amp;gt; metódus meghívódna, mert a &amp;lt;code&amp;gt;osgeo.gdal.Band&amp;lt;/code&amp;gt; objektum létrehozása után erre már nincs szükség (a Python &amp;quot;logikája&amp;quot; szerint, ami nem tudhat a háttérben levő C++ implementáció részleteiről).&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print gdal.Open(&amp;#039;/home/user/valami.img&amp;#039;).GetRasterBand(1).GetMinimum()&lt;br /&gt;
 Segmentation fault (core dumped)&lt;br /&gt;
&lt;br /&gt;
=== Fájlkezelés ===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az GDAL/OGR könyvtárak úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használnak. Például a következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen OGR driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
====Támogatott adatformátumok====&lt;br /&gt;
&lt;br /&gt;
A GDAL segítségével számos raszteres formátumot (állománytípust vagy egyéb adatforrást) tudunk kezelni. Az OGR könyvtár vektoros formátumú fájlokat kezel. A következőkben felsoroljuk a támogatott raszteres illetve vektoros állománytípusokat:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Raszteres adatformátumok (GDAL):&amp;#039;&amp;#039;&amp;#039; [http://www.gdal.org/frmt_various.html#AAIGrid Arc/Info ASCII Grid], [http://www.gdal.org/frmt_various.html#ACE2 ACE2], [http://www.gdal.org/frmt_various.html#ADRG ADRG/ARC Digitilized Raster Graphics (.gen/.thf)], [http://www.gdal.org/frmt_various.html#AIG Arc/Info Binary Grid (.adf)], [http://www.gdal.org/frmt_airsar.html AIRSAR Polarimetric], [http://www.gdal.org/frmt_various.html#ARG Azavea Raster Grid], [http://www.gdal.org/frmt_blx.html Magellan BLX Topo (.blx, .xlb)], [http://www.gdal.org/frmt_bag.html Bathymetry Attributed Grid (.bag)], [http://www.gdal.org/frmt_bmp.html Microsoft Windows Device Independent Bitmap (.bmp)], [http://www.gdal.org/frmt_various.html#BSB BSB Nautical Chart Format (.kap)], [http://www.gdal.org/frmt_various.html#BT VTP Binary Terrain Format (.bt)], [http://www.gdal.org/frmt_cals.html CALS Type I], [http://www.gdal.org/frmt_various.html#CEOS CEOS (Spot for instance)], [http://www.gdal.org/frmt_cosar.html TerraSAR-X Complex SAR Data Product], [http://www.gdal.org/frmt_various.html#CTG USGS LULC Composite Theme Grid], [http://www.gdal.org/frmt_various.html#DDS DirectDraw Surface], [http://www.gdal.org/frmt_various.html#DIMAP Spot DIMAP (metadata.dim)], [http://www.gdal.org/frmt_dods.html DODS / OPeNDAP], [http://www.gdal.org/frmt_various.html#DOQ1 First Generation USGS DOQ (.doq)], [http://www.gdal.org/frmt_various.html#DOQ2 New Labelled USGS DOQ (.doq)], [http://www.gdal.org/frmt_dted.html Military Elevation Data (.dt0, .dt1, .dt2)], [http://www.gdal.org/frmt_various.html#E00GRID Arc/Info Export E00 GRID], [http://www.gdal.org/frmt_various.html#ECRGTOC ECRG Table Of Contents (TOC.xml)], [http://www.gdal.org/frmt_ecw.html ERDAS Compressed Wavelets (.ecw)], [http://www.gdal.org/frmt_various.html#EHdr ESRI .hdr Labelled], [http://www.gdal.org/frmt_various.html#EIR Erdas Imagine Raw], [http://www.gdal.org/frmt_elas.html NASA ELAS], [http://www.gdal.org/frmt_various.html#ENVI ENVI .hdr Labelled Raster], [http://www.gdal.org/frmt_epsilon.html Epsilon - Wavelet compressed images], [http://www.gdal.org/frmt_ers.html ERMapper (.ers)], [http://www.gdal.org/frmt_various.html#Envisat Envisat Image Product (.n1)], [http://www.gdal.org/frmt_fast.html EOSAT FAST Format], [http://www.gdal.org/frmt_various.html#FITS FITS (.fits)], [http://www.gdal.org/frmt_various.html#GenBin Generic Binary (.hdr Labelled)], [http://www.gdal.org/frmt_georaster.html Oracle Spatial GeoRaster], [http://www.gdal.org/frmt_various.html#GFF GSat File Format], [http://www.gdal.org/frmt_gif.html Graphics Interchange Format (.gif)], [http://www.gdal.org/frmt_grib.html WMO GRIB1/GRIB2 (.grb)], [http://www.gdal.org/frmt_various.html#GMT GMT Compatible netCDF], [http://www.gdal.org/frmt_grass.html GRASS Raster Format], [http://www.gdal.org/frmt_various.html#GRASSASCIIGrid GRASS ASCII Grid], [http://www.gdal.org/frmt_various.html#GSAG Golden Software ASCII Grid], [http://www.gdal.org/frmt_various.html#GSBG Golden Software Binary Grid], [http://www.gdal.org/frmt_various.html#GS7BG Golden Software Surfer 7 Binary Grid], [http://www.gdal.org/frmt_gta.html Generic Tagged Arrays (.gta)], [http://www.gdal.org/frmt_gtiff.html TIFF / BigTIFF / GeoTIFF (.tif)], [http://www.gdal.org/frmt_various.html#GXF GXF - Grid eXchange File], [http://www.gdal.org/frmt_hdf4.html Hierarchical Data Format Release 4 (HDF4)], [http://www.gdal.org/frmt_hdf5.html Hierarchical Data Format Release 5 (HDF5)], [http://www.gdal.org/frmt_hf2.html HF2/HFZ heightfield raster], [http://www.gdal.org/frmt_hfa.html Erdas Imagine (.img)], [http://www.gdal.org/frmt_various.html#IDA Image Display and Analysis (WinDisp)], [http://www.gdal.org/frmt_various.html#ILWIS ILWIS Raster Map (.mpr,.mpl)], [http://www.gdal.org/frmt_intergraphraster.html Intergraph Raster], [http://www.gdal.org/frmt_various.html#IRIS IRIS], [http://www.gdal.org/frmt_various.html#ISCE ISCE raster], [http://www.gdal.org/frmt_isis2.html USGS Astrogeology ISIS cube (Version 2)], [http://www.gdal.org/frmt_isis3.html USGS Astrogeology ISIS cube (Version 3)], [http://www.gdal.org/frmt_palsar.html JAXA PALSAR Product Reader (Level 1.1/1.5)], [http://www.gdal.org/frmt_various.html#JDEM Japanese DEM (.mem)], [http://www.gdal.org/frmt_jpeg.html JPEG JFIF (.jpg)], [http://www.gdal.org/frmt_jpegls.html JPEG-LS], [http://www.gdal.org/frmt_jpeg2000.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2ecw.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2kak.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2mrsid.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2openjpeg.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jpipkak.html JPIP (based on Kakadu)], [http://www.gdal.org/frmt_kea.html KEA], [http://www.gdal.org/frmt_various.html#KRO KRO], [http://www.gdal.org/frmt_l1b.html NOAA Polar Orbiter Level 1b Data Set (AVHRR)], [http://www.gdal.org/frmt_various.html#LAN Erdas 7.x .LAN and .GIS], [http://www.gdal.org/frmt_lcp.html FARSITE v.4 LCP Format], [http://www.gdal.org/frmt_leveller.html Daylon Leveller Heightfield], [http://www.gdal.org/frmt_mbtiles.html MBTiles], [http://www.gdal.org/frmt_map.html OziExplorer .MAP], [http://www.gdal.org/frmt_mem.html In Memory Raster], [http://www.gdal.org/frmt_various.html#MFF Vexcel MFF], [http://www.gdal.org/frmt_mff2.html Vexcel MFF2], [http://www.gdal.org/frmt_mrsid_lidar.html MG4 Encoded Lidar], [http://www.gdal.org/frmt_marfa.html Meta Raster Format], [http://www.gdal.org/frmt_mrsid.html Multi-resolution Seamless Image Database], [http://www.gdal.org/frmt_msg.html Meteosat Second Generation], [http://www.gdal.org/frmt_msgn.html EUMETSAT Archive native (.nat)], [http://www.gdal.org/frmt_various.html#NDF NLAPS Data Format], [http://www.gdal.org/frmt_ngsgeoid.html NOAA NGS Geoid Height Grids], [http://www.gdal.org/frmt_nitf.html NITF (.ntf, .nsf, .gn?, .hr?, .ja?, .jg?, .jn?, .lf?, .on?, .tl?, .tp?, etc.)], [http://www.gdal.org/frmt_netcdf.html NetCDF], [http://www.gdal.org/frmt_ogdi.html OGDI Bridge], [http://www.gdal.org/frmt_ozi.html OZI OZF2/OZFX3], [http://www.gdal.org/frmt_various.html#PAux PCI .aux Labelled], [http://www.gdal.org/frmt_pcidsk.html PCI Geomatics Database File], [http://www.gdal.org/frmt_various.html#PCRaster PCRaster], [http://www.gdal.org/frmt_pdf.html Geospatial PDF], [http://www.gdal.org/frmt_pds.html NASA Planetary Data System], [http://www.gdal.org/frmt_plmosaic.html Planet Labs Mosaics API], [http://www.gdal.org/frmt_various.html#PNG Portable Network Graphics (.png)], [http://www.gdal.org/frmt_various.html#PNM Netpbm (.ppm,.pgm)], [http://www.gdal.org/frmt_r.html R Object Data Store], [http://www.gdal.org/frmt_rasdaman.html Rasdaman], [http://www.gdal.org/frmt_rasterlite.html Rasterlite - Rasters in SQLite DB], [http://www.gdal.org/frmt_rik.html Swedish Grid RIK (.rik)], [http://www.gdal.org/frmt_rmf.html Raster Matrix Format (*.rsw, .mtw)], [http://www.gdal.org/frmt_various.html#ROI_PAC ROI_PAC Raster], [http://www.gdal.org/frmt_various.html#RPFTOC Raster Product Format/RPF (CADRG, CIB)], [http://www.gdal.org/frmt_rs2.html RadarSat2 XML (product.xml)], [http://www.gdal.org/frmt_Idrisi.html Idrisi Raster], [http://www.gdal.org/frmt_safe.html Sentinel 1 SAR SAFE (manifest.safe)], [http://www.gdal.org/frmt_sentinel2.html Sentinel 2], [http://www.gdal.org/frmt_various.html#SAGA SAGA GIS Binary format], [http://www.gdal.org/frmt_various.html#SAR_CEOS SAR CEOS], [http://www.gdal.org/frmt_sde.html ArcSDE Raster], [http://www.gdal.org/frmt_various.html#SDTS USGS SDTS DEM (*CATD.DDF)], [http://www.gdal.org/frmt_various.html#SGI SGI Image Format], [http://www.gdal.org/frmt_various.html#SNODAS Snow Data Assimilation System], [http://www.gdal.org/frmt_various.html#SRP Standard Raster Product (ASRP/USRP)], [http://www.gdal.org/frmt_various.html#SRTMHGT SRTM HGT Format], [http://www.gdal.org/frmt_terragen.html Terragen Heightfield (.ter)], [http://www.gdal.org/frmt_usgsdem.html USGS ASCII DEM / CDED (.dem)], [http://www.gdal.org/frmt_wcs.html OGC Web Coverage Service], [http://www.gdal.org/frmt_webp.html WEBP], [http://www.gdal.org/frmt_wms.html OGC Web Map Service, and TMS, WorldWind, On Earth tiled, VirtualEarth, ArcGIS REST, IIP)], [http://www.gdal.org/frmt_wmts.html OGC Web Map Tile Service], [http://www.gdal.org/frmt_various.html#XPM X11 Pixmap (.xpm)], [http://www.gdal.org/frmt_xyz.html ASCII Gridded XYZ], [http://www.gdal.org/frmt_various.html#ZMap ZMap Plus Grid], [http://www.gdal.org/frmt_hfa.html here]&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Vektorgrafikus adatformátumok (OGR):&amp;#039;&amp;#039;&amp;#039; [http://www.gdal.org/drv_aeronavfaa.html Aeronav FAA files], [http://www.gdal.org/drv_amigocloud.html AmigoCloud API], [http://www.gdal.org/drv_ao.html ESRI ArcObjects], [http://www.gdal.org/drv_avcbin.html Arc/Info Binary Coverage], [http://www.gdal.org/drv_avce00.html Arc/Info .E00 (ASCII) Coverage], [http://www.gdal.org/drv_arcgen.html Arc/Info Generate], [http://www.gdal.org/drv_bna.html Atlas BNA], [http://www.gdal.org/drv_dwg.html AutoCAD DWG], [http://www.gdal.org/drv_dxf.html AutoCAD DXF], [http://www.gdal.org/drv_cartodb.html CartoDB], [http://www.gdal.org/drv_cloudant.html Cloudant / CouchDB], [http://www.gdal.org/drv_couchdb.html CouchDB / GeoCouch], [http://www.gdal.org/drv_csv.html Comma Separated Value (.csv)], [http://www.gdal.org/drv_csw.html OGC CSW (Catalog Service for the Web)], [http://www.gdal.org/drv_vfk.html Czech Cadastral Exchange Data Format], [http://www.gdal.org/drv_db2.html DB2 Spatial], [http://www.gdal.org/drv_dods.html DODS/OPeNDAP], [http://www.gdal.org/drv_edigeo.html EDIGEO], [http://www.gdal.org/drv_elasticsearch.html ElasticSearch], [http://www.gdal.org/drv_filegdb.html ESRI FileGDB], [http://www.gdal.org/drv_pgeo.html ESRI Personal GeoDatabase], [http://www.gdal.org/drv_sde.html ESRI ArcSDE], [http://www.gdal.org/drv_shapefile.html ESRI Shapefile / DBF], [http://www.gdal.org/drv_fme.html FMEObjects Gateway], [http://www.gdal.org/drv_geojson.html GeoJSON], [http://www.gdal.org/drv_geoconcept.html G&amp;amp;eacute;oconcept Export], [http://www.gdal.org/drv_geomedia.html Geomedia .mdb], [http://www.gdal.org/drv_geopackage.html GeoPackage], [http://www.gdal.org/drv_georss.html GeoRSS], [http://www.gdal.org/drv_gft.html Google Fusion Tables], [http://www.gdal.org/drv_gml.html GML], [http://www.gdal.org/drv_gmt.html GMT], [http://www.gdal.org/drv_gpsbabel.html GPSBabel], [http://www.gdal.org/drv_gpx.html GPX], [http://www.gdal.org/drv_grass.html GRASS Vector Format], [http://www.gdal.org/drv_gtm.html GPSTrackMaker (.gtm, .gtz)], [http://www.gdal.org/drv_htf.html Hydrographic Transfer Format], [http://www.gdal.org/drv_idrisi.html Idrisi Vector (.VCT)], [http://www.gdal.org/drv_idb.html Informix DataBlade], [http://www.gdal.org/drv_ili.html INTERLIS], [http://www.gdal.org/drv_ingres.html INGRES], [http://www.gdal.org/drv_jml.html JML], [http://www.gdal.org/drv_kml.html KML], [http://www.gdal.org/drv_libkml.html LIBKML], [http://www.gdal.org/drv_mitab.html Mapinfo File], [http://www.gdal.org/drv_dgn.html Microstation DGN], [http://www.gdal.org/drv_mdb.html Access MDB (PGeo and Geomedia capable)], [http://www.gdal.org/drv_memory.html Memory], [http://www.gdal.org/drv_mongodb.html MongoDB], [http://www.gdal.org/drv_mysql.html MySQL], [http://www.gdal.org/drv_nas.html NAS - ALKIS], [http://www.gdal.org/drv_oci.html Oracle Spatial], [http://www.gdal.org/drv_odbc.html ODBC], [http://www.gdal.org/drv_mssqlspatial.html MS SQL Spatial], [http://www.gdal.org/drv_ods.html Open Document Spreadsheet], [http://www.gdal.org/drv_ogdi.html OGDI Vectors (VPF, VMAP, DCW)], [http://www.gdal.org/drv_openair.html OpenAir], [http://www.gdal.org/drv_openfilegdb.html ESRI FileGDB], [http://www.gdal.org/drv_osm.html OpenStreetMap XML and PBF], [http://www.gdal.org/drv_pds.html PDS], [http://www.gdal.org/drv_plscenes.html Planet Labs Scenes API], [http://www.gdal.org/drv_pgdump.html PostgreSQL SQL dump], [http://www.gdal.org/drv_pg.html PostgreSQL/PostGIS], [http://www.gdal.org/drv_s57.html S-57 (ENC)], [http://www.gdal.org/drv_sdts.html SDTS], [http://www.gdal.org/drv_segukooa.html SEG-P1 / UKOOA P1/90], [http://www.gdal.org/drv_segy.html SEG-Y], [http://www.gdal.org/drv_selafin.html Selafin/Seraphin format], [http://www.gdal.org/drv_sqlite.html SQLite/SpatiaLite], [http://www.gdal.org/drv_sua.html SUA], [http://www.gdal.org/drv_svg.html SVG], [http://www.gdal.org/drv_sxf.html Storage and eXchange Format], [http://www.gdal.org/drv_ntf.html UK .NTF], [http://www.gdal.org/drv_tiger.html U.S. Census TIGER/Line], [http://www.gdal.org/drv_vrt.html VRT - Virtual Datasource], [http://www.gdal.org/drv_wfs.html OGC WFS (Web Feature Service)], [http://www.gdal.org/drv_xls.html MS Excel format], [http://www.gdal.org/drv_xlsx.html MS Office Open XML spreadsheet], [http://www.gdal.org/drv_xplane.html X-Plane/Flightgear aeronautical data], [http://www.gdal.org/drv_vdv.html VDV-451/VDV-452/IDF], [http://www.gdal.org/drv_walk.html Walk], [http://www.gdal.org/drv_wasp.html WAsP .map format].&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése OGR-ban===&lt;br /&gt;
&lt;br /&gt;
Röviden megmutatjuk az ESRI Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;layer = datasource.GetLayer()&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­-ek számát a layer GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index) függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával megoldjuk a hozzáférést. Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­-e dolgunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon, ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
=== OGR Attribútumok ===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shape file geometriájának egyszerűsítése ===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Népsűrűség ábrázolása térképen===&lt;br /&gt;
&lt;br /&gt;
Az alábbi kód, egy meglévő shapefile rétegre egy másikat generál, egy megadott atríbútum táblából, aminek segítségével szemlélteti, hogy az adott területeken mekkora a népsűrűség. Ehhez pontokat generál, egy pont 100 embert reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
import random&lt;br /&gt;
# shapefile megnyitasa ogr reteg letrehozasa elso feature lekerese&lt;br /&gt;
source = ogr.Open(&amp;quot;GIS_CensusTract_poly.shp&amp;quot;)&lt;br /&gt;
county = source.GetLayer(&amp;quot;GIS_CensusTract_poly&amp;quot;)&lt;br /&gt;
feature = county.GetNextFeature()&lt;br /&gt;
# kimeneti shapefile es reteg letrehozasa&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
output = driver.CreateDataSource(&amp;quot;PopDensity.shp&amp;quot;)&lt;br /&gt;
dots = output.CreateLayer(&amp;quot;PopDensity&amp;quot;, geom_type=ogr.wkbPoint)&lt;br /&gt;
while feature is not None:&lt;br /&gt;
  field_index = feature.GetFieldIndex(&amp;quot;POPULAT11&amp;quot;)&lt;br /&gt;
  population = int(feature.GetField(field_index))&lt;br /&gt;
  # 1 pont szaz embert reprezental &lt;br /&gt;
  density = population / 100&lt;br /&gt;
  count = 0   &lt;br /&gt;
  while count &amp;lt; density:&lt;br /&gt;
    geometry = feature.GetGeometryRef()&lt;br /&gt;
    minx, maxx, miny, maxy = geometry.GetEnvelope()&lt;br /&gt;
    x = random.uniform(minx,maxx)&lt;br /&gt;
    y = random.uniform(miny,maxy)&lt;br /&gt;
    f = ogr.Feature(feature_def=dots.GetLayerDefn())&lt;br /&gt;
    wkt = &amp;quot;POINT(%f %f)&amp;quot; % (x,y)&lt;br /&gt;
    point = ogr.CreateGeometryFromWkt(wkt)&lt;br /&gt;
    # Csak akkor hasznaljuk a pontot, ha benne van az adott alakzatban&lt;br /&gt;
    if feature.GetGeometryRef().Contains(point):&lt;br /&gt;
        f.SetGeometryDirectly(point)&lt;br /&gt;
        dots.CreateFeature(f)&lt;br /&gt;
        count += 1&lt;br /&gt;
    # objektum eltorlese&lt;br /&gt;
    f.Destroy()&lt;br /&gt;
  feature = county.GetNextFeature()&lt;br /&gt;
source.Destroy()&lt;br /&gt;
output.Destroy()  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hivatkozások ==&lt;br /&gt;
&lt;br /&gt;
http://www.gdal.org/&lt;br /&gt;
&lt;br /&gt;
https://pcjericks.github.io/py-gdalogr-cookbook/&lt;br /&gt;
&lt;br /&gt;
http://www.osgeo.org/gdal_ogr&lt;br /&gt;
&lt;br /&gt;
http://geoexamples.com/&lt;br /&gt;
&lt;br /&gt;
http://www.digital-geography.com/create-and-edit-shapefiles-with-python-only/&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=271</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=271"/>
		<updated>2016-06-30T21:12:26Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt &lt;br /&gt;
könyvtárakhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek a funkciók. Az alkalmazásprogramozási felület (API) általában pontosan követi a GDAL és OGR könyvtárak C++  implementációiban használt osztályok és eljárások megnevezéseit. Az elérhető hivatalos dokumentáció (http://gdal.org/python) is automatikusan generált, a meglévő C/C++ függvények leírásai alapján. &lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
A GDAL/OGR könyvtárak használatához a következőkre van szükség:&lt;br /&gt;
*    Python 2.X (Python 3.X a GDAL 1.7.0 verziójától kezdődően). Python 2-höz ajánlott 2.3 és 2.7 közötti verziót használni.&lt;br /&gt;
*    libgdal (1.5.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (gdal-devel)&lt;br /&gt;
*    numpy (1.0.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (numpy-devel)&lt;br /&gt;
A numpy telepítése nem feltétlenül szükséges, viszont sok példaprogram és eszköz használja, ezért ajánlott.&lt;br /&gt;
&lt;br /&gt;
=== GNU/Linux ===&lt;br /&gt;
A GDAL/OGR könyvtár és a Python kötések telepítését elvégezhetjük [https://docs.python.org/2/library/distutils.html distutils] vagy [https://pypi.python.org/pypi/setuptools setuptools] segítségével (az utóbbi használata ajánlott). Setuptools-t használva a telepítést a következő paranccsal végezhetjük el:&lt;br /&gt;
&lt;br /&gt;
 $ sudo easy_install GDAL&lt;br /&gt;
&lt;br /&gt;
Ha nem szeretnénk feltétlenül a legfrissebb verziót használni és megelégszünk az adott Linux disztribúció repozitóriumában fellelhető verzióval, akkor talán legegyszerűbb a csomagkezelőt használni a telepítésre. Ubuntu operációs rendszeren például a következő paranccsal telepíthető a GDAL/OGR könyvtárak Python kötése:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install gdal-bin python-gdal&lt;br /&gt;
&lt;br /&gt;
Ha [https://trac.osgeo.org/gdal/wiki/DownloadSource forrásból] szeretnénk lefordítani a legújabb verziót, akkor a Python kötéshez a &amp;lt;code&amp;gt;--with-python&amp;lt;/code&amp;gt; kapcsolót kell használni:&lt;br /&gt;
&lt;br /&gt;
 $ ./configure --with-python&lt;br /&gt;
&lt;br /&gt;
Ezután a szokásos módon a &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; eszköz elvégzi a fordítást és a telepítést:&lt;br /&gt;
&lt;br /&gt;
 $ make&lt;br /&gt;
 $ make install&lt;br /&gt;
&lt;br /&gt;
A két könyvtár Python kötését a [http://www.swig.org/index.php SWIG] eszköz segítségével generálják.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
A GDAL/OGR könyvtár Python kötésének telepítéséhez a következő lépésekre lesz szükség:&lt;br /&gt;
* [http://download.osgeo.org/gdal/win32/1.6/ GDAL Windows bináris fájlok] letöltése és kicsomagolása. Alapesetben csak a gdalwin32exe160.zip nevű fájlra lesz szükség. A könyvtárban fellelhető többi fájl bővítmények fejlesztéséhez szükséges. A zip fájlt bárhova ki lehet csomagolni, példa gyanánt a &amp;lt;code&amp;gt;C:\gdalwin32-1.6&amp;lt;/code&amp;gt; könyvtárat fogjuk használni. A kicsomagolás után a &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt; rendszerváltozót [http://www.computerhope.com/issues/ch000549.htm módosítani] kell, hozzá kell adni a &amp;lt;code&amp;gt;C:\gdalwin32-1.6\bin&amp;lt;/code&amp;gt; elérési útvonalat.&lt;br /&gt;
* Létre kell hozni a &amp;lt;code&amp;gt;GDAL_DATA&amp;lt;/code&amp;gt; nevű rendszerváltozót, aminek az értéke az adatokat tartalmazó könyvtár neve, jelen esetben &amp;lt;code&amp;gt;C:\gdalwin32-1.6\data&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Szükséges lehet az operációs rendszer újraindítása.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
A GDAL Python kötésében öt főmodult érhetünk el a következő módon:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import ogr&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import osr&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal_array&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdalconst&lt;br /&gt;
&lt;br /&gt;
=== Buktatók ===&lt;br /&gt;
&lt;br /&gt;
Annak ellenére, hogy a Python kötések használata teljesen elrejti a mögöttes C++ könyvtárat, használata pár apró dologban mégis eltér a megszokott Python modulok használatától, amire érdemes figyelnie a Python programozónak:&lt;br /&gt;
&lt;br /&gt;
==== A Python kötés nem használ kivételeket ====&lt;br /&gt;
&lt;br /&gt;
A Python kötés alapértelmezetten nem használja a kivételeket, ehelyett meghatározott hibaértéket térít vissza az adott függvény, és egy hibaüzenet jelenik meg a standard kimeneten. Például ha egy nemlétező fájlt próbálunk megnyitni, ez az alapértelmezett működés:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.Open(&amp;#039;/home/user/nincsilyen.img&amp;#039;)&lt;br /&gt;
 ERROR 4: `/home/user/nincsilyen.img&amp;#039; does not exist in the file system,&lt;br /&gt;
 and is not recognised as a supported dataset name.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ha mégis használni szeretnénk a kivételeket, akkor ezeket explicit módon engedélyezni kell az &amp;lt;code&amp;gt;UseExceptions()&amp;lt;/code&amp;gt; meghívásával. &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.UseExceptions()        # Kivetelek engedelyezese&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.Open(&amp;#039;/home/user/nincsilyen.img&amp;#039;)&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
 RuntimeError: `/home/user/nincsilyen.img&amp;#039; does not exist in the file system,&lt;br /&gt;
 and is not recognised as a supported dataset name.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez megkötés a visszamenőleges kompatibilitás miatt szükséges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== A Python összeomlik, ha egy olyan objektumot használunk, ami összefügg egy már előzőleg törölt objektummal ====&lt;br /&gt;
&lt;br /&gt;
A GDAL és OGR objektumok valójában C++ objektumok, amik mutatókkal kapcsolódnak egymáshoz. Megtörténhet, hogy a Python garbage collector felszabadítja egy objektum tárhelyét (vagy a programozó töröl egy objektumot &amp;lt;code&amp;gt;del&amp;lt;/code&amp;gt;-lel), miközben egy másik objektum mutatóval hivatkozik rá. Ilyenkor a Python összeomlik. A következő példában egy bemeneti állományt megnyitva létrehozunk egy objektumot, majd egy másikat, ami a háttérben hivatkozik az elsőre (C++ mutatóval). Ezután kitöröljük az első objektumot és meghívjuk a másodiknak egy metódusát. Ennyi elég ahhoz, hogy a Python összeomoljon.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; adat = gdal.Open(&amp;#039;/home/user/valami.img&amp;#039;)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; band = adat.GetRasterBand(1) # Egy uj objektum letrehozasa, ami kapcsolatban van az adat objektummal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; del adat           # Toroljuk az adat objektumot&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; band.GetMinimum();    # A band objektum egy metodusanak hivasa es a Python osszeomlik&lt;br /&gt;
 Segmentation fault (core dumped)&lt;br /&gt;
&lt;br /&gt;
A következő példában a garbage collector törli automatikusan az &amp;lt;code&amp;gt;osgeo.gdal.Dataset&amp;lt;/code&amp;gt; típusú objektumot még mielőtt a &amp;lt;code&amp;gt;GetMinimum()&amp;lt;/code&amp;gt; metódus meghívódna, mert a &amp;lt;code&amp;gt;osgeo.gdal.Band&amp;lt;/code&amp;gt; objektum létrehozása után erre már nincs szükség (a Python &amp;quot;logikája&amp;quot; szerint, ami nem tudhat a háttérben levő C++ implementáció részleteiről).&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print gdal.Open(&amp;#039;/home/user/valami.img&amp;#039;).GetRasterBand(1).GetMinimum()&lt;br /&gt;
 Segmentation fault (core dumped)&lt;br /&gt;
&lt;br /&gt;
=== Fájlkezelés ===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az GDAL/OGR könyvtárak úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használnak. Például a következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen OGR driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
====Támogatott adatformátumok====&lt;br /&gt;
&lt;br /&gt;
A GDAL segítségével számos raszteres formátumot (állománytípust vagy egyéb adatforrást) tudunk kezelni. Az OGR könyvtár vektoros formátumú fájlokat kezel. A következőkben felsoroljuk a támogatott raszteres illetve vektoros állománytípusokat:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Raszteres adatformátumok (GDAL):&amp;#039;&amp;#039;&amp;#039; [http://www.gdal.org/frmt_various.html#AAIGrid Arc/Info ASCII Grid], [http://www.gdal.org/frmt_various.html#ACE2 ACE2], [http://www.gdal.org/frmt_various.html#ADRG ADRG/ARC Digitilized Raster Graphics (.gen/.thf)], [http://www.gdal.org/frmt_various.html#AIG Arc/Info Binary Grid (.adf)], [http://www.gdal.org/frmt_airsar.html AIRSAR Polarimetric], [http://www.gdal.org/frmt_various.html#ARG Azavea Raster Grid], [http://www.gdal.org/frmt_blx.html Magellan BLX Topo (.blx, .xlb)], [http://www.gdal.org/frmt_bag.html Bathymetry Attributed Grid (.bag)], [http://www.gdal.org/frmt_bmp.html Microsoft Windows Device Independent Bitmap (.bmp)], [http://www.gdal.org/frmt_various.html#BSB BSB Nautical Chart Format (.kap)], [http://www.gdal.org/frmt_various.html#BT VTP Binary Terrain Format (.bt)], [http://www.gdal.org/frmt_cals.html CALS Type I], [http://www.gdal.org/frmt_various.html#CEOS CEOS (Spot for instance)], [http://www.gdal.org/frmt_cosar.html TerraSAR-X Complex SAR Data Product], [http://www.gdal.org/frmt_various.html#CTG USGS LULC Composite Theme Grid], [http://www.gdal.org/frmt_various.html#DDS DirectDraw Surface], [http://www.gdal.org/frmt_various.html#DIMAP Spot DIMAP (metadata.dim)], [http://www.gdal.org/frmt_dods.html DODS / OPeNDAP], [http://www.gdal.org/frmt_various.html#DOQ1 First Generation USGS DOQ (.doq)], [http://www.gdal.org/frmt_various.html#DOQ2 New Labelled USGS DOQ (.doq)], [http://www.gdal.org/frmt_dted.html Military Elevation Data (.dt0, .dt1, .dt2)], [http://www.gdal.org/frmt_various.html#E00GRID Arc/Info Export E00 GRID], [http://www.gdal.org/frmt_various.html#ECRGTOC ECRG Table Of Contents (TOC.xml)], [http://www.gdal.org/frmt_ecw.html ERDAS Compressed Wavelets (.ecw)], [http://www.gdal.org/frmt_various.html#EHdr ESRI .hdr Labelled], [http://www.gdal.org/frmt_various.html#EIR Erdas Imagine Raw], [http://www.gdal.org/frmt_elas.html NASA ELAS], [http://www.gdal.org/frmt_various.html#ENVI ENVI .hdr Labelled Raster], [http://www.gdal.org/frmt_epsilon.html Epsilon - Wavelet compressed images], [http://www.gdal.org/frmt_ers.html ERMapper (.ers)], [http://www.gdal.org/frmt_various.html#Envisat Envisat Image Product (.n1)], [http://www.gdal.org/frmt_fast.html EOSAT FAST Format], [http://www.gdal.org/frmt_various.html#FITS FITS (.fits)], [http://www.gdal.org/frmt_various.html#GenBin Generic Binary (.hdr Labelled)], [http://www.gdal.org/frmt_georaster.html Oracle Spatial GeoRaster], [http://www.gdal.org/frmt_various.html#GFF GSat File Format], [http://www.gdal.org/frmt_gif.html Graphics Interchange Format (.gif)], [http://www.gdal.org/frmt_grib.html WMO GRIB1/GRIB2 (.grb)], [http://www.gdal.org/frmt_various.html#GMT GMT Compatible netCDF], [http://www.gdal.org/frmt_grass.html GRASS Raster Format], [http://www.gdal.org/frmt_various.html#GRASSASCIIGrid GRASS ASCII Grid], [http://www.gdal.org/frmt_various.html#GSAG Golden Software ASCII Grid], [http://www.gdal.org/frmt_various.html#GSBG Golden Software Binary Grid], [http://www.gdal.org/frmt_various.html#GS7BG Golden Software Surfer 7 Binary Grid], [http://www.gdal.org/frmt_gta.html Generic Tagged Arrays (.gta)], [http://www.gdal.org/frmt_gtiff.html TIFF / BigTIFF / GeoTIFF (.tif)], [http://www.gdal.org/frmt_various.html#GXF GXF - Grid eXchange File], [http://www.gdal.org/frmt_hdf4.html Hierarchical Data Format Release 4 (HDF4)], [http://www.gdal.org/frmt_hdf5.html Hierarchical Data Format Release 5 (HDF5)], [http://www.gdal.org/frmt_hf2.html HF2/HFZ heightfield raster], [http://www.gdal.org/frmt_hfa.html Erdas Imagine (.img)], [http://www.gdal.org/frmt_various.html#IDA Image Display and Analysis (WinDisp)], [http://www.gdal.org/frmt_various.html#ILWIS ILWIS Raster Map (.mpr,.mpl)], [http://www.gdal.org/frmt_intergraphraster.html Intergraph Raster], [http://www.gdal.org/frmt_various.html#IRIS IRIS], [http://www.gdal.org/frmt_various.html#ISCE ISCE raster], [http://www.gdal.org/frmt_isis2.html USGS Astrogeology ISIS cube (Version 2)], [http://www.gdal.org/frmt_isis3.html USGS Astrogeology ISIS cube (Version 3)], [http://www.gdal.org/frmt_palsar.html JAXA PALSAR Product Reader (Level 1.1/1.5)], [http://www.gdal.org/frmt_various.html#JDEM Japanese DEM (.mem)], [http://www.gdal.org/frmt_jpeg.html JPEG JFIF (.jpg)], [http://www.gdal.org/frmt_jpegls.html JPEG-LS], [http://www.gdal.org/frmt_jpeg2000.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2ecw.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2kak.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2mrsid.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2openjpeg.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jpipkak.html JPIP (based on Kakadu)], [http://www.gdal.org/frmt_kea.html KEA], [http://www.gdal.org/frmt_various.html#KRO KRO], [http://www.gdal.org/frmt_l1b.html NOAA Polar Orbiter Level 1b Data Set (AVHRR)], [http://www.gdal.org/frmt_various.html#LAN Erdas 7.x .LAN and .GIS], [http://www.gdal.org/frmt_lcp.html FARSITE v.4 LCP Format], [http://www.gdal.org/frmt_leveller.html Daylon Leveller Heightfield], [http://www.gdal.org/frmt_mbtiles.html MBTiles], [http://www.gdal.org/frmt_map.html OziExplorer .MAP], [http://www.gdal.org/frmt_mem.html In Memory Raster], [http://www.gdal.org/frmt_various.html#MFF Vexcel MFF], [http://www.gdal.org/frmt_mff2.html Vexcel MFF2], [http://www.gdal.org/frmt_mrsid_lidar.html MG4 Encoded Lidar], [http://www.gdal.org/frmt_marfa.html Meta Raster Format], [http://www.gdal.org/frmt_mrsid.html Multi-resolution Seamless Image Database], [http://www.gdal.org/frmt_msg.html Meteosat Second Generation], [http://www.gdal.org/frmt_msgn.html EUMETSAT Archive native (.nat)], [http://www.gdal.org/frmt_various.html#NDF NLAPS Data Format], [http://www.gdal.org/frmt_ngsgeoid.html NOAA NGS Geoid Height Grids], [http://www.gdal.org/frmt_nitf.html NITF (.ntf, .nsf, .gn?, .hr?, .ja?, .jg?, .jn?, .lf?, .on?, .tl?, .tp?, etc.)], [http://www.gdal.org/frmt_netcdf.html NetCDF], [http://www.gdal.org/frmt_ogdi.html OGDI Bridge], [http://www.gdal.org/frmt_ozi.html OZI OZF2/OZFX3], [http://www.gdal.org/frmt_various.html#PAux PCI .aux Labelled], [http://www.gdal.org/frmt_pcidsk.html PCI Geomatics Database File], [http://www.gdal.org/frmt_various.html#PCRaster PCRaster], [http://www.gdal.org/frmt_pdf.html Geospatial PDF], [http://www.gdal.org/frmt_pds.html NASA Planetary Data System], [http://www.gdal.org/frmt_plmosaic.html Planet Labs Mosaics API], [http://www.gdal.org/frmt_various.html#PNG Portable Network Graphics (.png)], [http://www.gdal.org/frmt_various.html#PNM Netpbm (.ppm,.pgm)], [http://www.gdal.org/frmt_r.html R Object Data Store], [http://www.gdal.org/frmt_rasdaman.html Rasdaman], [http://www.gdal.org/frmt_rasterlite.html Rasterlite - Rasters in SQLite DB], [http://www.gdal.org/frmt_rik.html Swedish Grid RIK (.rik)], [http://www.gdal.org/frmt_rmf.html Raster Matrix Format (*.rsw, .mtw)], [http://www.gdal.org/frmt_various.html#ROI_PAC ROI_PAC Raster], [http://www.gdal.org/frmt_various.html#RPFTOC Raster Product Format/RPF (CADRG, CIB)], [http://www.gdal.org/frmt_rs2.html RadarSat2 XML (product.xml)], [http://www.gdal.org/frmt_Idrisi.html Idrisi Raster], [http://www.gdal.org/frmt_safe.html Sentinel 1 SAR SAFE (manifest.safe)], [http://www.gdal.org/frmt_sentinel2.html Sentinel 2], [http://www.gdal.org/frmt_various.html#SAGA SAGA GIS Binary format], [http://www.gdal.org/frmt_various.html#SAR_CEOS SAR CEOS], [http://www.gdal.org/frmt_sde.html ArcSDE Raster], [http://www.gdal.org/frmt_various.html#SDTS USGS SDTS DEM (*CATD.DDF)], [http://www.gdal.org/frmt_various.html#SGI SGI Image Format], [http://www.gdal.org/frmt_various.html#SNODAS Snow Data Assimilation System], [http://www.gdal.org/frmt_various.html#SRP Standard Raster Product (ASRP/USRP)], [http://www.gdal.org/frmt_various.html#SRTMHGT SRTM HGT Format], [http://www.gdal.org/frmt_terragen.html Terragen Heightfield (.ter)], [http://www.gdal.org/frmt_usgsdem.html USGS ASCII DEM / CDED (.dem)], [http://www.gdal.org/frmt_wcs.html OGC Web Coverage Service], [http://www.gdal.org/frmt_webp.html WEBP], [http://www.gdal.org/frmt_wms.html OGC Web Map Service, and TMS, WorldWind, On Earth tiled, VirtualEarth, ArcGIS REST, IIP)], [http://www.gdal.org/frmt_wmts.html OGC Web Map Tile Service], [http://www.gdal.org/frmt_various.html#XPM X11 Pixmap (.xpm)], [http://www.gdal.org/frmt_xyz.html ASCII Gridded XYZ], [http://www.gdal.org/frmt_various.html#ZMap ZMap Plus Grid], [http://www.gdal.org/frmt_hfa.html here]&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Vektorgrafikus adatformátumok (OGR):&amp;#039;&amp;#039;&amp;#039; [http://www.gdal.org/drv_aeronavfaa.html Aeronav FAA files], [http://www.gdal.org/drv_amigocloud.html AmigoCloud API], [http://www.gdal.org/drv_ao.html ESRI ArcObjects], [http://www.gdal.org/drv_avcbin.html Arc/Info Binary Coverage], [http://www.gdal.org/drv_avce00.html Arc/Info .E00 (ASCII) Coverage], [http://www.gdal.org/drv_arcgen.html Arc/Info Generate], [http://www.gdal.org/drv_bna.html Atlas BNA], [http://www.gdal.org/drv_dwg.html AutoCAD DWG], [http://www.gdal.org/drv_dxf.html AutoCAD DXF], [http://www.gdal.org/drv_cartodb.html CartoDB], [http://www.gdal.org/drv_cloudant.html Cloudant / CouchDB], [http://www.gdal.org/drv_couchdb.html CouchDB / GeoCouch], [http://www.gdal.org/drv_csv.html Comma Separated Value (.csv)], [http://www.gdal.org/drv_csw.html OGC CSW (Catalog Service for the Web)], [http://www.gdal.org/drv_vfk.html Czech Cadastral Exchange Data Format], [http://www.gdal.org/drv_db2.html DB2 Spatial], [http://www.gdal.org/drv_dods.html DODS/OPeNDAP], [http://www.gdal.org/drv_edigeo.html EDIGEO], [http://www.gdal.org/drv_elasticsearch.html ElasticSearch], [http://www.gdal.org/drv_filegdb.html ESRI FileGDB], [http://www.gdal.org/drv_pgeo.html ESRI Personal GeoDatabase], [http://www.gdal.org/drv_sde.html ESRI ArcSDE], [http://www.gdal.org/drv_shapefile.html ESRI Shapefile / DBF], [http://www.gdal.org/drv_fme.html FMEObjects Gateway], [http://www.gdal.org/drv_geojson.html GeoJSON], [http://www.gdal.org/drv_geoconcept.html G&amp;amp;eacute;oconcept Export], [http://www.gdal.org/drv_geomedia.html Geomedia .mdb], [http://www.gdal.org/drv_geopackage.html GeoPackage], [http://www.gdal.org/drv_georss.html GeoRSS], [http://www.gdal.org/drv_gft.html Google Fusion Tables], [http://www.gdal.org/drv_gml.html GML], [http://www.gdal.org/drv_gmt.html GMT], [http://www.gdal.org/drv_gpsbabel.html GPSBabel], [http://www.gdal.org/drv_gpx.html GPX], [http://www.gdal.org/drv_grass.html GRASS Vector Format], [http://www.gdal.org/drv_gtm.html GPSTrackMaker (.gtm, .gtz)], [http://www.gdal.org/drv_htf.html Hydrographic Transfer Format], [http://www.gdal.org/drv_idrisi.html Idrisi Vector (.VCT)], [http://www.gdal.org/drv_idb.html Informix DataBlade], [http://www.gdal.org/drv_ili.html INTERLIS], [http://www.gdal.org/drv_ingres.html INGRES], [http://www.gdal.org/drv_jml.html JML], [http://www.gdal.org/drv_kml.html KML], [http://www.gdal.org/drv_libkml.html LIBKML], [http://www.gdal.org/drv_mitab.html Mapinfo File], [http://www.gdal.org/drv_dgn.html Microstation DGN], [http://www.gdal.org/drv_mdb.html Access MDB (PGeo and Geomedia capable)], [http://www.gdal.org/drv_memory.html Memory], [http://www.gdal.org/drv_mongodb.html MongoDB], [http://www.gdal.org/drv_mysql.html MySQL], [http://www.gdal.org/drv_nas.html NAS - ALKIS], [http://www.gdal.org/drv_oci.html Oracle Spatial], [http://www.gdal.org/drv_odbc.html ODBC], [http://www.gdal.org/drv_mssqlspatial.html MS SQL Spatial], [http://www.gdal.org/drv_ods.html Open Document Spreadsheet], [http://www.gdal.org/drv_ogdi.html OGDI Vectors (VPF, VMAP, DCW)], [http://www.gdal.org/drv_openair.html OpenAir], [http://www.gdal.org/drv_openfilegdb.html ESRI FileGDB], [http://www.gdal.org/drv_osm.html OpenStreetMap XML and PBF], [http://www.gdal.org/drv_pds.html PDS], [http://www.gdal.org/drv_plscenes.html Planet Labs Scenes API], [http://www.gdal.org/drv_pgdump.html PostgreSQL SQL dump], [http://www.gdal.org/drv_pg.html PostgreSQL/PostGIS], [http://www.gdal.org/drv_s57.html S-57 (ENC)], [http://www.gdal.org/drv_sdts.html SDTS], [http://www.gdal.org/drv_segukooa.html SEG-P1 / UKOOA P1/90], [http://www.gdal.org/drv_segy.html SEG-Y], [http://www.gdal.org/drv_selafin.html Selafin/Seraphin format], [http://www.gdal.org/drv_sqlite.html SQLite/SpatiaLite], [http://www.gdal.org/drv_sua.html SUA], [http://www.gdal.org/drv_svg.html SVG], [http://www.gdal.org/drv_sxf.html Storage and eXchange Format], [http://www.gdal.org/drv_ntf.html UK .NTF], [http://www.gdal.org/drv_tiger.html U.S. Census TIGER/Line], [http://www.gdal.org/drv_vrt.html VRT - Virtual Datasource], [http://www.gdal.org/drv_wfs.html OGC WFS (Web Feature Service)], [http://www.gdal.org/drv_xls.html MS Excel format], [http://www.gdal.org/drv_xlsx.html MS Office Open XML spreadsheet], [http://www.gdal.org/drv_xplane.html X-Plane/Flightgear aeronautical data], [http://www.gdal.org/drv_vdv.html VDV-451/VDV-452/IDF], [http://www.gdal.org/drv_walk.html Walk], [http://www.gdal.org/drv_wasp.html WAsP .map format].&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése OGR-ban===&lt;br /&gt;
&lt;br /&gt;
Röviden megmutatjuk az ESRI Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;layer = datasource.GetLayer()&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­-ek számát a layer GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index) függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával megoldjuk a hozzáférést. Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­-e dolgunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon, ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
=== OGR Attribútumok ===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shape file geometriájának egyszerűsítése ===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Népsűrűség ábrázolása térképen===&lt;br /&gt;
&lt;br /&gt;
Az alábbi kód, egy meglévő shapefile rétegre egy másikat generál, egy megadott atríbútum táblából, aminek segítségével szemlélteti, hogy az adott területeken mekkora a népsűrűség. Ehhez pontokat generál, egy pont 100 embert reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
import random&lt;br /&gt;
# shapefile megnyitasa ogr reteg letrehozasa elso feature lekerese&lt;br /&gt;
source = ogr.Open(&amp;quot;GIS_CensusTract_poly.shp&amp;quot;)&lt;br /&gt;
county = source.GetLayer(&amp;quot;GIS_CensusTract_poly&amp;quot;)&lt;br /&gt;
feature = county.GetNextFeature()&lt;br /&gt;
# kimeneti shapefile es reteg letrehozasa&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
output = driver.CreateDataSource(&amp;quot;PopDensity.shp&amp;quot;)&lt;br /&gt;
dots = output.CreateLayer(&amp;quot;PopDensity&amp;quot;, geom_type=ogr.wkbPoint)&lt;br /&gt;
while feature is not None:&lt;br /&gt;
  field_index = feature.GetFieldIndex(&amp;quot;POPULAT11&amp;quot;)&lt;br /&gt;
  population = int(feature.GetField(field_index))&lt;br /&gt;
  # 1 pont szaz embert reprezental &lt;br /&gt;
  density = population / 100&lt;br /&gt;
  count = 0   &lt;br /&gt;
  while count &amp;lt; density:&lt;br /&gt;
    geometry = feature.GetGeometryRef()&lt;br /&gt;
    minx, maxx, miny, maxy = geometry.GetEnvelope()&lt;br /&gt;
    x = random.uniform(minx,maxx)&lt;br /&gt;
    y = random.uniform(miny,maxy)&lt;br /&gt;
    f = ogr.Feature(feature_def=dots.GetLayerDefn())&lt;br /&gt;
    wkt = &amp;quot;POINT(%f %f)&amp;quot; % (x,y)&lt;br /&gt;
    point = ogr.CreateGeometryFromWkt(wkt)&lt;br /&gt;
    # Csak akkor hasznaljuk a pontot, ha benne van az adott alakzatban&lt;br /&gt;
    if feature.GetGeometryRef().Contains(point):&lt;br /&gt;
        f.SetGeometryDirectly(point)&lt;br /&gt;
        dots.CreateFeature(f)&lt;br /&gt;
        count += 1&lt;br /&gt;
    # objektum eltorlese&lt;br /&gt;
    f.Destroy()&lt;br /&gt;
  feature = county.GetNextFeature()&lt;br /&gt;
source.Destroy()&lt;br /&gt;
output.Destroy()  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hivatkozások ==&lt;br /&gt;
&lt;br /&gt;
http://www.gdal.org/&lt;br /&gt;
&lt;br /&gt;
https://pcjericks.github.io/py-gdalogr-cookbook/&lt;br /&gt;
&lt;br /&gt;
http://www.osgeo.org/gdal_ogr&lt;br /&gt;
&lt;br /&gt;
http://geoexamples.com/&lt;br /&gt;
&lt;br /&gt;
http://www.digital-geography.com/create-and-edit-shapefiles-with-python-only/&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=246</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=246"/>
		<updated>2016-06-19T19:32:01Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: Átrendezés&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt &lt;br /&gt;
könyvtárakhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek a funkciók. A két könyvtár Python kötését a [http://www.swig.org/index.php SWIG] eszköz segítségével generálják. Az alkalmazásprogramozási felület (API) általában pontosan követi a GDAL és OGR könyvtárak C++  implementációiban használt osztályok és eljárások megnevezéseit. Az elérhető hivatalos dokumentáció (http://gdal.org/python) is automatikusan generált, a meglévő C/C++ függvények leírásai alapján. &lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
A GDAL/OGR könyvtárak használatához a következőkre van szükség:&lt;br /&gt;
*    Python 2.X (Python 3.X a GDAL 1.7.0 verziójától kezdődően). Python 2-höz ajánlott 2.3 és 2.7 közötti verziót használni.&lt;br /&gt;
*    libgdal (1.5.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (gdal-devel)&lt;br /&gt;
*    numpy (1.0.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (numpy-devel)&lt;br /&gt;
A numpy telepítése nem feltétlenül szükséges, viszont sok példaprogram és eszköz használja, ezért ajánlott.&lt;br /&gt;
&lt;br /&gt;
=== GNU/Linux ===&lt;br /&gt;
A GDAL/OGR könyvtár és a Python kötések telepítését elvégezhetjük [https://docs.python.org/2/library/distutils.html distutils] vagy [https://pypi.python.org/pypi/setuptools setuptools] segítségével (az utóbbi használata ajánlott). Setuptools-t használva a telepítést a következő paranccsal végezhetjük el:&lt;br /&gt;
&lt;br /&gt;
 $ sudo easy_install GDAL&lt;br /&gt;
&lt;br /&gt;
Ha nem szeretnénk feltétlenül a legfrissebb verziót használni és megelégszünk az adott Linux disztribúció repozitóriumában fellelhető verzióval, akkor talán legegyszerűbb a csomagkezelőt használni a telepítésre. Ubuntu operációs rendszeren például a következő paranccsal telepíthető a GDAL/OGR könyvtárak Python kötése:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install gdal-bin python-gdal&lt;br /&gt;
&lt;br /&gt;
Ha [https://trac.osgeo.org/gdal/wiki/DownloadSource forrásból] szeretnénk lefordítani a legújabb verziót, akkor a Python kötéshez a &amp;lt;code&amp;gt;--with-python&amp;lt;/code&amp;gt; kapcsolót kell használni:&lt;br /&gt;
&lt;br /&gt;
 $ ./configure --with-python&lt;br /&gt;
&lt;br /&gt;
Ezután a szokásos módon a &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; eszköz elvégzi a fordítást és a telepítést:&lt;br /&gt;
&lt;br /&gt;
 $ make&lt;br /&gt;
 $ make install&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
A GDAL/OGR könyvtár Python kötésének telepítéséhez a következő lépésekre lesz szükség:&lt;br /&gt;
* [http://download.osgeo.org/gdal/win32/1.6/ GDAL Windows bináris fájlok] letöltése és kicsomagolása. Alapesetben csak a gdalwin32exe160.zip nevű fájlra lesz szükség. A könyvtárban fellelhető többi fájl bővítmények fejlesztéséhez szükséges. A zip fájlt bárhova ki lehet csomagolni, példa gyanánt a &amp;lt;code&amp;gt;C:\gdalwin32-1.6&amp;lt;/code&amp;gt; könyvtárat fogjuk használni. A kicsomagolás után a &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt; rendszerváltozót [http://www.computerhope.com/issues/ch000549.htm módosítani] kell, hozzá kell adni a &amp;lt;code&amp;gt;C:\gdalwin32-1.6\bin&amp;lt;/code&amp;gt; elérési útvonalat.&lt;br /&gt;
* Létre kell hozni a &amp;lt;code&amp;gt;GDAL_DATA&amp;lt;/code&amp;gt; nevű rendszerváltozót, aminek az értéke az adatokat tartalmazó könyvtár neve, jelen esetben &amp;lt;code&amp;gt;C:\gdalwin32-1.6\data&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Szükséges lehet az operációs rendszer újraindítása.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
A GDAL Python kötésében öt főmodult érhetünk el a következő módon:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import ogr&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import osr&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal_array&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdalconst&lt;br /&gt;
&lt;br /&gt;
=== Buktatók ===&lt;br /&gt;
&lt;br /&gt;
Annak ellenére, hogy a Python kötések használata teljesen elrejti a mögöttes C++ könyvtárat, használata pár apró dologban mégis eltér a megszokott Python modulok használatától, amire érdemes figyelnie a Python programozónak:&lt;br /&gt;
&lt;br /&gt;
==== A Python kötés nem használ kivételeket ====&lt;br /&gt;
&lt;br /&gt;
A Python kötés alapértelmezetten nem használja a kivételeket, ehelyett meghatározott hibaértéket térít vissza az adott függvény, és egy hibaüzenet jelenik meg a standard kimeneten. Például ha egy nemlétező fájlt próbálunk megnyitni, ez az alapértelmezett működés:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.Open(&amp;#039;/home/user/nincsilyen.img&amp;#039;)&lt;br /&gt;
 ERROR 4: `/home/user/nincsilyen.img&amp;#039; does not exist in the file system,&lt;br /&gt;
 and is not recognised as a supported dataset name.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ha mégis használni szeretnénk a kivételeket, akkor ezeket explicit módon engedélyezni kell az &amp;lt;code&amp;gt;UseExceptions()&amp;lt;/code&amp;gt; meghívásával. &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.UseExceptions()        # Kivetelek engedelyezese&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.Open(&amp;#039;/home/user/nincsilyen.img&amp;#039;)&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
 RuntimeError: `/home/user/nincsilyen.img&amp;#039; does not exist in the file system,&lt;br /&gt;
 and is not recognised as a supported dataset name.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez megkötés a visszamenőleges kompatibilitás miatt szükséges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== A Python összeomlik, ha egy olyan objektumot használunk, ami összefügg egy már előzőleg törölt objektummal ====&lt;br /&gt;
&lt;br /&gt;
A GDAL és OGR objektumok valójában C++ objektumok, amik mutatókkal kapcsolódnak egymáshoz. Megtörténhet, hogy a Python garbage collector felszabadítja egy objektum tárhelyét (vagy a programozó töröl egy objektumot &amp;lt;code&amp;gt;del&amp;lt;/code&amp;gt;-lel), miközben egy másik objektum mutatóval hivatkozik rá. Ilyenkor a Python összeomlik. A következő példában egy bemeneti állományt megnyitva létrehozunk egy objektumot, majd egy másikat, ami a háttérben hivatkozik az elsőre (C++ mutatóval). Ezután kitöröljük az első objektumot és meghívjuk a másodiknak egy metódusát. Ennyi elég ahhoz, hogy a Python összeomoljon.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; adat = gdal.Open(&amp;#039;/home/user/valami.img&amp;#039;)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; band = adat.GetRasterBand(1) # Egy uj objektum letrehozasa, ami kapcsolatban van az adat objektummal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; del adat           # Toroljuk az adat objektumot&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; band.GetMinimum();    # A band objektum egy metodusanak hivasa es a Python osszeomlik&lt;br /&gt;
 Segmentation fault (core dumped)&lt;br /&gt;
&lt;br /&gt;
A következő példában a garbage collector törli automatikusan az &amp;lt;code&amp;gt;osgeo.gdal.Dataset&amp;lt;/code&amp;gt; típusú objektumot még mielőtt a &amp;lt;code&amp;gt;GetMinimum()&amp;lt;/code&amp;gt; metódus meghívódna, mert a &amp;lt;code&amp;gt;osgeo.gdal.Band&amp;lt;/code&amp;gt; objektum létrehozása után erre már nincs szükség (a Python &amp;quot;logikája&amp;quot; szerint, ami nem tudhat a háttérben levő C++ implementáció részleteiről).&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print gdal.Open(&amp;#039;/home/user/valami.img&amp;#039;).GetRasterBand(1).GetMinimum()&lt;br /&gt;
 Segmentation fault (core dumped)&lt;br /&gt;
&lt;br /&gt;
=== Fájlkezelés ===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az GDAL/OGR könyvtárak úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használnak. Például a következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen OGR driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
====Támogatott adatformátumok====&lt;br /&gt;
&lt;br /&gt;
A GDAL segítségével számos raszteres formátumot (állománytípust vagy egyéb adatforrást) tudunk kezelni. Az OGR könyvtár vektoros formátumú fájlokat kezel. A következőkben felsoroljuk a támogatott raszteres illetve vektoros állománytípusokat:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Raszteres adatformátumok (GDAL):&amp;#039;&amp;#039;&amp;#039; [http://www.gdal.org/frmt_various.html#AAIGrid Arc/Info ASCII Grid], [http://www.gdal.org/frmt_various.html#ACE2 ACE2], [http://www.gdal.org/frmt_various.html#ADRG ADRG/ARC Digitilized Raster Graphics (.gen/.thf)], [http://www.gdal.org/frmt_various.html#AIG Arc/Info Binary Grid (.adf)], [http://www.gdal.org/frmt_airsar.html AIRSAR Polarimetric], [http://www.gdal.org/frmt_various.html#ARG Azavea Raster Grid], [http://www.gdal.org/frmt_blx.html Magellan BLX Topo (.blx, .xlb)], [http://www.gdal.org/frmt_bag.html Bathymetry Attributed Grid (.bag)], [http://www.gdal.org/frmt_bmp.html Microsoft Windows Device Independent Bitmap (.bmp)], [http://www.gdal.org/frmt_various.html#BSB BSB Nautical Chart Format (.kap)], [http://www.gdal.org/frmt_various.html#BT VTP Binary Terrain Format (.bt)], [http://www.gdal.org/frmt_cals.html CALS Type I], [http://www.gdal.org/frmt_various.html#CEOS CEOS (Spot for instance)], [http://www.gdal.org/frmt_cosar.html TerraSAR-X Complex SAR Data Product], [http://www.gdal.org/frmt_various.html#CTG USGS LULC Composite Theme Grid], [http://www.gdal.org/frmt_various.html#DDS DirectDraw Surface], [http://www.gdal.org/frmt_various.html#DIMAP Spot DIMAP (metadata.dim)], [http://www.gdal.org/frmt_dods.html DODS / OPeNDAP], [http://www.gdal.org/frmt_various.html#DOQ1 First Generation USGS DOQ (.doq)], [http://www.gdal.org/frmt_various.html#DOQ2 New Labelled USGS DOQ (.doq)], [http://www.gdal.org/frmt_dted.html Military Elevation Data (.dt0, .dt1, .dt2)], [http://www.gdal.org/frmt_various.html#E00GRID Arc/Info Export E00 GRID], [http://www.gdal.org/frmt_various.html#ECRGTOC ECRG Table Of Contents (TOC.xml)], [http://www.gdal.org/frmt_ecw.html ERDAS Compressed Wavelets (.ecw)], [http://www.gdal.org/frmt_various.html#EHdr ESRI .hdr Labelled], [http://www.gdal.org/frmt_various.html#EIR Erdas Imagine Raw], [http://www.gdal.org/frmt_elas.html NASA ELAS], [http://www.gdal.org/frmt_various.html#ENVI ENVI .hdr Labelled Raster], [http://www.gdal.org/frmt_epsilon.html Epsilon - Wavelet compressed images], [http://www.gdal.org/frmt_ers.html ERMapper (.ers)], [http://www.gdal.org/frmt_various.html#Envisat Envisat Image Product (.n1)], [http://www.gdal.org/frmt_fast.html EOSAT FAST Format], [http://www.gdal.org/frmt_various.html#FITS FITS (.fits)], [http://www.gdal.org/frmt_various.html#GenBin Generic Binary (.hdr Labelled)], [http://www.gdal.org/frmt_georaster.html Oracle Spatial GeoRaster], [http://www.gdal.org/frmt_various.html#GFF GSat File Format], [http://www.gdal.org/frmt_gif.html Graphics Interchange Format (.gif)], [http://www.gdal.org/frmt_grib.html WMO GRIB1/GRIB2 (.grb)], [http://www.gdal.org/frmt_various.html#GMT GMT Compatible netCDF], [http://www.gdal.org/frmt_grass.html GRASS Raster Format], [http://www.gdal.org/frmt_various.html#GRASSASCIIGrid GRASS ASCII Grid], [http://www.gdal.org/frmt_various.html#GSAG Golden Software ASCII Grid], [http://www.gdal.org/frmt_various.html#GSBG Golden Software Binary Grid], [http://www.gdal.org/frmt_various.html#GS7BG Golden Software Surfer 7 Binary Grid], [http://www.gdal.org/frmt_gta.html Generic Tagged Arrays (.gta)], [http://www.gdal.org/frmt_gtiff.html TIFF / BigTIFF / GeoTIFF (.tif)], [http://www.gdal.org/frmt_various.html#GXF GXF - Grid eXchange File], [http://www.gdal.org/frmt_hdf4.html Hierarchical Data Format Release 4 (HDF4)], [http://www.gdal.org/frmt_hdf5.html Hierarchical Data Format Release 5 (HDF5)], [http://www.gdal.org/frmt_hf2.html HF2/HFZ heightfield raster], [http://www.gdal.org/frmt_hfa.html Erdas Imagine (.img)], [http://www.gdal.org/frmt_various.html#IDA Image Display and Analysis (WinDisp)], [http://www.gdal.org/frmt_various.html#ILWIS ILWIS Raster Map (.mpr,.mpl)], [http://www.gdal.org/frmt_intergraphraster.html Intergraph Raster], [http://www.gdal.org/frmt_various.html#IRIS IRIS], [http://www.gdal.org/frmt_various.html#ISCE ISCE raster], [http://www.gdal.org/frmt_isis2.html USGS Astrogeology ISIS cube (Version 2)], [http://www.gdal.org/frmt_isis3.html USGS Astrogeology ISIS cube (Version 3)], [http://www.gdal.org/frmt_palsar.html JAXA PALSAR Product Reader (Level 1.1/1.5)], [http://www.gdal.org/frmt_various.html#JDEM Japanese DEM (.mem)], [http://www.gdal.org/frmt_jpeg.html JPEG JFIF (.jpg)], [http://www.gdal.org/frmt_jpegls.html JPEG-LS], [http://www.gdal.org/frmt_jpeg2000.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2ecw.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2kak.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2mrsid.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2openjpeg.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jpipkak.html JPIP (based on Kakadu)], [http://www.gdal.org/frmt_kea.html KEA], [http://www.gdal.org/frmt_various.html#KRO KRO], [http://www.gdal.org/frmt_l1b.html NOAA Polar Orbiter Level 1b Data Set (AVHRR)], [http://www.gdal.org/frmt_various.html#LAN Erdas 7.x .LAN and .GIS], [http://www.gdal.org/frmt_lcp.html FARSITE v.4 LCP Format], [http://www.gdal.org/frmt_leveller.html Daylon Leveller Heightfield], [http://www.gdal.org/frmt_mbtiles.html MBTiles], [http://www.gdal.org/frmt_map.html OziExplorer .MAP], [http://www.gdal.org/frmt_mem.html In Memory Raster], [http://www.gdal.org/frmt_various.html#MFF Vexcel MFF], [http://www.gdal.org/frmt_mff2.html Vexcel MFF2], [http://www.gdal.org/frmt_mrsid_lidar.html MG4 Encoded Lidar], [http://www.gdal.org/frmt_marfa.html Meta Raster Format], [http://www.gdal.org/frmt_mrsid.html Multi-resolution Seamless Image Database], [http://www.gdal.org/frmt_msg.html Meteosat Second Generation], [http://www.gdal.org/frmt_msgn.html EUMETSAT Archive native (.nat)], [http://www.gdal.org/frmt_various.html#NDF NLAPS Data Format], [http://www.gdal.org/frmt_ngsgeoid.html NOAA NGS Geoid Height Grids], [http://www.gdal.org/frmt_nitf.html NITF (.ntf, .nsf, .gn?, .hr?, .ja?, .jg?, .jn?, .lf?, .on?, .tl?, .tp?, etc.)], [http://www.gdal.org/frmt_netcdf.html NetCDF], [http://www.gdal.org/frmt_ogdi.html OGDI Bridge], [http://www.gdal.org/frmt_ozi.html OZI OZF2/OZFX3], [http://www.gdal.org/frmt_various.html#PAux PCI .aux Labelled], [http://www.gdal.org/frmt_pcidsk.html PCI Geomatics Database File], [http://www.gdal.org/frmt_various.html#PCRaster PCRaster], [http://www.gdal.org/frmt_pdf.html Geospatial PDF], [http://www.gdal.org/frmt_pds.html NASA Planetary Data System], [http://www.gdal.org/frmt_plmosaic.html Planet Labs Mosaics API], [http://www.gdal.org/frmt_various.html#PNG Portable Network Graphics (.png)], [http://www.gdal.org/frmt_various.html#PNM Netpbm (.ppm,.pgm)], [http://www.gdal.org/frmt_r.html R Object Data Store], [http://www.gdal.org/frmt_rasdaman.html Rasdaman], [http://www.gdal.org/frmt_rasterlite.html Rasterlite - Rasters in SQLite DB], [http://www.gdal.org/frmt_rik.html Swedish Grid RIK (.rik)], [http://www.gdal.org/frmt_rmf.html Raster Matrix Format (*.rsw, .mtw)], [http://www.gdal.org/frmt_various.html#ROI_PAC ROI_PAC Raster], [http://www.gdal.org/frmt_various.html#RPFTOC Raster Product Format/RPF (CADRG, CIB)], [http://www.gdal.org/frmt_rs2.html RadarSat2 XML (product.xml)], [http://www.gdal.org/frmt_Idrisi.html Idrisi Raster], [http://www.gdal.org/frmt_safe.html Sentinel 1 SAR SAFE (manifest.safe)], [http://www.gdal.org/frmt_sentinel2.html Sentinel 2], [http://www.gdal.org/frmt_various.html#SAGA SAGA GIS Binary format], [http://www.gdal.org/frmt_various.html#SAR_CEOS SAR CEOS], [http://www.gdal.org/frmt_sde.html ArcSDE Raster], [http://www.gdal.org/frmt_various.html#SDTS USGS SDTS DEM (*CATD.DDF)], [http://www.gdal.org/frmt_various.html#SGI SGI Image Format], [http://www.gdal.org/frmt_various.html#SNODAS Snow Data Assimilation System], [http://www.gdal.org/frmt_various.html#SRP Standard Raster Product (ASRP/USRP)], [http://www.gdal.org/frmt_various.html#SRTMHGT SRTM HGT Format], [http://www.gdal.org/frmt_terragen.html Terragen Heightfield (.ter)], [http://www.gdal.org/frmt_usgsdem.html USGS ASCII DEM / CDED (.dem)], [http://www.gdal.org/frmt_wcs.html OGC Web Coverage Service], [http://www.gdal.org/frmt_webp.html WEBP], [http://www.gdal.org/frmt_wms.html OGC Web Map Service, and TMS, WorldWind, On Earth tiled, VirtualEarth, ArcGIS REST, IIP)], [http://www.gdal.org/frmt_wmts.html OGC Web Map Tile Service], [http://www.gdal.org/frmt_various.html#XPM X11 Pixmap (.xpm)], [http://www.gdal.org/frmt_xyz.html ASCII Gridded XYZ], [http://www.gdal.org/frmt_various.html#ZMap ZMap Plus Grid], [http://www.gdal.org/frmt_hfa.html here]&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Vektorgrafikus adatformátumok (OGR):&amp;#039;&amp;#039;&amp;#039; [http://www.gdal.org/drv_aeronavfaa.html Aeronav FAA files], [http://www.gdal.org/drv_amigocloud.html AmigoCloud API], [http://www.gdal.org/drv_ao.html ESRI ArcObjects], [http://www.gdal.org/drv_avcbin.html Arc/Info Binary Coverage], [http://www.gdal.org/drv_avce00.html Arc/Info .E00 (ASCII) Coverage], [http://www.gdal.org/drv_arcgen.html Arc/Info Generate], [http://www.gdal.org/drv_bna.html Atlas BNA], [http://www.gdal.org/drv_dwg.html AutoCAD DWG], [http://www.gdal.org/drv_dxf.html AutoCAD DXF], [http://www.gdal.org/drv_cartodb.html CartoDB], [http://www.gdal.org/drv_cloudant.html Cloudant / CouchDB], [http://www.gdal.org/drv_couchdb.html CouchDB / GeoCouch], [http://www.gdal.org/drv_csv.html Comma Separated Value (.csv)], [http://www.gdal.org/drv_csw.html OGC CSW (Catalog Service for the Web)], [http://www.gdal.org/drv_vfk.html Czech Cadastral Exchange Data Format], [http://www.gdal.org/drv_db2.html DB2 Spatial], [http://www.gdal.org/drv_dods.html DODS/OPeNDAP], [http://www.gdal.org/drv_edigeo.html EDIGEO], [http://www.gdal.org/drv_elasticsearch.html ElasticSearch], [http://www.gdal.org/drv_filegdb.html ESRI FileGDB], [http://www.gdal.org/drv_pgeo.html ESRI Personal GeoDatabase], [http://www.gdal.org/drv_sde.html ESRI ArcSDE], [http://www.gdal.org/drv_shapefile.html ESRI Shapefile / DBF], [http://www.gdal.org/drv_fme.html FMEObjects Gateway], [http://www.gdal.org/drv_geojson.html GeoJSON], [http://www.gdal.org/drv_geoconcept.html G&amp;amp;eacute;oconcept Export], [http://www.gdal.org/drv_geomedia.html Geomedia .mdb], [http://www.gdal.org/drv_geopackage.html GeoPackage], [http://www.gdal.org/drv_georss.html GeoRSS], [http://www.gdal.org/drv_gft.html Google Fusion Tables], [http://www.gdal.org/drv_gml.html GML], [http://www.gdal.org/drv_gmt.html GMT], [http://www.gdal.org/drv_gpsbabel.html GPSBabel], [http://www.gdal.org/drv_gpx.html GPX], [http://www.gdal.org/drv_grass.html GRASS Vector Format], [http://www.gdal.org/drv_gtm.html GPSTrackMaker (.gtm, .gtz)], [http://www.gdal.org/drv_htf.html Hydrographic Transfer Format], [http://www.gdal.org/drv_idrisi.html Idrisi Vector (.VCT)], [http://www.gdal.org/drv_idb.html Informix DataBlade], [http://www.gdal.org/drv_ili.html INTERLIS], [http://www.gdal.org/drv_ingres.html INGRES], [http://www.gdal.org/drv_jml.html JML], [http://www.gdal.org/drv_kml.html KML], [http://www.gdal.org/drv_libkml.html LIBKML], [http://www.gdal.org/drv_mitab.html Mapinfo File], [http://www.gdal.org/drv_dgn.html Microstation DGN], [http://www.gdal.org/drv_mdb.html Access MDB (PGeo and Geomedia capable)], [http://www.gdal.org/drv_memory.html Memory], [http://www.gdal.org/drv_mongodb.html MongoDB], [http://www.gdal.org/drv_mysql.html MySQL], [http://www.gdal.org/drv_nas.html NAS - ALKIS], [http://www.gdal.org/drv_oci.html Oracle Spatial], [http://www.gdal.org/drv_odbc.html ODBC], [http://www.gdal.org/drv_mssqlspatial.html MS SQL Spatial], [http://www.gdal.org/drv_ods.html Open Document Spreadsheet], [http://www.gdal.org/drv_ogdi.html OGDI Vectors (VPF, VMAP, DCW)], [http://www.gdal.org/drv_openair.html OpenAir], [http://www.gdal.org/drv_openfilegdb.html ESRI FileGDB], [http://www.gdal.org/drv_osm.html OpenStreetMap XML and PBF], [http://www.gdal.org/drv_pds.html PDS], [http://www.gdal.org/drv_plscenes.html Planet Labs Scenes API], [http://www.gdal.org/drv_pgdump.html PostgreSQL SQL dump], [http://www.gdal.org/drv_pg.html PostgreSQL/PostGIS], [http://www.gdal.org/drv_s57.html S-57 (ENC)], [http://www.gdal.org/drv_sdts.html SDTS], [http://www.gdal.org/drv_segukooa.html SEG-P1 / UKOOA P1/90], [http://www.gdal.org/drv_segy.html SEG-Y], [http://www.gdal.org/drv_selafin.html Selafin/Seraphin format], [http://www.gdal.org/drv_sqlite.html SQLite/SpatiaLite], [http://www.gdal.org/drv_sua.html SUA], [http://www.gdal.org/drv_svg.html SVG], [http://www.gdal.org/drv_sxf.html Storage and eXchange Format], [http://www.gdal.org/drv_ntf.html UK .NTF], [http://www.gdal.org/drv_tiger.html U.S. Census TIGER/Line], [http://www.gdal.org/drv_vrt.html VRT - Virtual Datasource], [http://www.gdal.org/drv_wfs.html OGC WFS (Web Feature Service)], [http://www.gdal.org/drv_xls.html MS Excel format], [http://www.gdal.org/drv_xlsx.html MS Office Open XML spreadsheet], [http://www.gdal.org/drv_xplane.html X-Plane/Flightgear aeronautical data], [http://www.gdal.org/drv_vdv.html VDV-451/VDV-452/IDF], [http://www.gdal.org/drv_walk.html Walk], [http://www.gdal.org/drv_wasp.html WAsP .map format].&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése OGR-ban===&lt;br /&gt;
&lt;br /&gt;
Röviden megmutatjuk az ESRI Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;layer = datasource.GetLayer()&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­-ek számát a layer GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index) függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával megoldjuk a hozzáférést. Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­-e dolgunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon, ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
=== OGR Attribútumok ===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shape file geometriájának egyszerűsítése ===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Népsűrűség ábrázolása térképen===&lt;br /&gt;
&lt;br /&gt;
Az alábbi kód, egy meglévő shapefile rétegre egy másikat generál, egy megadott atríbútum táblából, aminek segítségével szemlélteti, hogy az adott területeken mekkora a népsűrűség. Ehhez pontokat generál, egy pont 100 embert reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
import random&lt;br /&gt;
# shapefile megnyitasa ogr reteg letrehozasa elso feature lekerese&lt;br /&gt;
source = ogr.Open(&amp;quot;GIS_CensusTract_poly.shp&amp;quot;)&lt;br /&gt;
county = source.GetLayer(&amp;quot;GIS_CensusTract_poly&amp;quot;)&lt;br /&gt;
feature = county.GetNextFeature()&lt;br /&gt;
# kimeneti shapefile es reteg letrehozasa&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
output = driver.CreateDataSource(&amp;quot;PopDensity.shp&amp;quot;)&lt;br /&gt;
dots = output.CreateLayer(&amp;quot;PopDensity&amp;quot;, geom_type=ogr.wkbPoint)&lt;br /&gt;
while feature is not None:&lt;br /&gt;
  field_index = feature.GetFieldIndex(&amp;quot;POPULAT11&amp;quot;)&lt;br /&gt;
  population = int(feature.GetField(field_index))&lt;br /&gt;
  # 1 pont szaz embert reprezental &lt;br /&gt;
  density = population / 100&lt;br /&gt;
  count = 0   &lt;br /&gt;
  while count &amp;lt; density:&lt;br /&gt;
    geometry = feature.GetGeometryRef()&lt;br /&gt;
    minx, maxx, miny, maxy = geometry.GetEnvelope()&lt;br /&gt;
    x = random.uniform(minx,maxx)&lt;br /&gt;
    y = random.uniform(miny,maxy)&lt;br /&gt;
    f = ogr.Feature(feature_def=dots.GetLayerDefn())&lt;br /&gt;
    wkt = &amp;quot;POINT(%f %f)&amp;quot; % (x,y)&lt;br /&gt;
    point = ogr.CreateGeometryFromWkt(wkt)&lt;br /&gt;
    # Csak akkor hasznaljuk a pontot, ha benne van az adott alakzatban&lt;br /&gt;
    if feature.GetGeometryRef().Contains(point):&lt;br /&gt;
        f.SetGeometryDirectly(point)&lt;br /&gt;
        dots.CreateFeature(f)&lt;br /&gt;
        count += 1&lt;br /&gt;
    # objektum eltorlese&lt;br /&gt;
    f.Destroy()&lt;br /&gt;
  feature = county.GetNextFeature()&lt;br /&gt;
source.Destroy()&lt;br /&gt;
output.Destroy()  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hivatkozások ==&lt;br /&gt;
&lt;br /&gt;
http://www.gdal.org/&lt;br /&gt;
&lt;br /&gt;
https://pcjericks.github.io/py-gdalogr-cookbook/&lt;br /&gt;
&lt;br /&gt;
http://www.osgeo.org/gdal_ogr&lt;br /&gt;
&lt;br /&gt;
http://geoexamples.com/&lt;br /&gt;
&lt;br /&gt;
http://www.digital-geography.com/create-and-edit-shapefiles-with-python-only/&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=245</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=245"/>
		<updated>2016-06-19T19:25:34Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: /* Buktatók */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt &lt;br /&gt;
könyvtárakhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek a funkciók. A két könyvtár Python kötését a [http://www.swig.org/index.php SWIG] eszköz segítségével generálják. Az alkalmazásprogramozási felület (API) általában pontosan követi a GDAL és OGR könyvtárak C++  implementációiban használt osztályok és eljárások megnevezéseit. Az elérhető hivatalos dokumentáció (http://gdal.org/python) is automatikusan generált, a meglévő C/C++ függvények leírásai alapján. &lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
A GDAL/OGR könyvtárak használatához a következőkre van szükség:&lt;br /&gt;
*    Python 2.X (Python 3.X a GDAL 1.7.0 verziójától kezdődően). Python 2-höz ajánlott 2.3 és 2.7 közötti verziót használni.&lt;br /&gt;
*    libgdal (1.5.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (gdal-devel)&lt;br /&gt;
*    numpy (1.0.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (numpy-devel)&lt;br /&gt;
A numpy telepítése nem feltétlenül szükséges, viszont sok példaprogram és eszköz használja, ezért ajánlott.&lt;br /&gt;
&lt;br /&gt;
=== GNU/Linux ===&lt;br /&gt;
A GDAL/OGR könyvtár és a Python kötések telepítését elvégezhetjük [https://docs.python.org/2/library/distutils.html distutils] vagy [https://pypi.python.org/pypi/setuptools setuptools] segítségével (az utóbbi használata ajánlott). Setuptools-t használva a telepítést a következő paranccsal végezhetjük el:&lt;br /&gt;
&lt;br /&gt;
 $ sudo easy_install GDAL&lt;br /&gt;
&lt;br /&gt;
Ha nem szeretnénk feltétlenül a legfrissebb verziót használni és megelégszünk az adott Linux disztribúció repozitóriumában fellelhető verzióval, akkor talán legegyszerűbb a csomagkezelőt használni a telepítésre. Ubuntu operációs rendszeren például a következő paranccsal telepíthető a GDAL/OGR könyvtárak Python kötése:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install gdal-bin python-gdal&lt;br /&gt;
&lt;br /&gt;
Ha [https://trac.osgeo.org/gdal/wiki/DownloadSource forrásból] szeretnénk lefordítani a legújabb verziót, akkor a Python kötéshez a &amp;lt;code&amp;gt;--with-python&amp;lt;/code&amp;gt; kapcsolót kell használni:&lt;br /&gt;
&lt;br /&gt;
 $ ./configure --with-python&lt;br /&gt;
&lt;br /&gt;
Ezután a szokásos módon a &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; eszköz elvégzi a fordítást és a telepítést:&lt;br /&gt;
&lt;br /&gt;
 $ make&lt;br /&gt;
 $ make install&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
A GDAL/OGR könyvtár Python kötésének telepítéséhez a következő lépésekre lesz szükség:&lt;br /&gt;
* [http://download.osgeo.org/gdal/win32/1.6/ GDAL Windows bináris fájlok] letöltése és kicsomagolása. Alapesetben csak a gdalwin32exe160.zip nevű fájlra lesz szükség. A könyvtárban fellelhető többi fájl bővítmények fejlesztéséhez szükséges. A zip fájlt bárhova ki lehet csomagolni, példa gyanánt a &amp;lt;code&amp;gt;C:\gdalwin32-1.6&amp;lt;/code&amp;gt; könyvtárat fogjuk használni. A kicsomagolás után a &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt; rendszerváltozót [http://www.computerhope.com/issues/ch000549.htm módosítani] kell, hozzá kell adni a &amp;lt;code&amp;gt;C:\gdalwin32-1.6\bin&amp;lt;/code&amp;gt; elérési útvonalat.&lt;br /&gt;
* Létre kell hozni a &amp;lt;code&amp;gt;GDAL_DATA&amp;lt;/code&amp;gt; nevű rendszerváltozót, aminek az értéke az adatokat tartalmazó könyvtár neve, jelen esetben &amp;lt;code&amp;gt;C:\gdalwin32-1.6\data&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Szükséges lehet az operációs rendszer újraindítása.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
A GDAL Python kötésében öt főmodult érhetünk el a következő módon:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import ogr&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import osr&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal_array&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdalconst&lt;br /&gt;
&lt;br /&gt;
=== Buktatók ===&lt;br /&gt;
&lt;br /&gt;
Annak ellenére, hogy a Python kötések használata teljesen elrejti a mögöttes C++ könyvtárat, használata pár apró dologban mégis eltér a megszokott Python modulok használatától, amire érdemes figyelnie a Python programozónak:&lt;br /&gt;
&lt;br /&gt;
==== A Python kötés nem használ kivételeket ====&lt;br /&gt;
&lt;br /&gt;
A Python kötés alapértelmezetten nem használja a kivételeket, ehelyett meghatározott hibaértéket térít vissza az adott függvény, és egy hibaüzenet jelenik meg a standard kimeneten. Például ha egy nemlétező fájlt próbálunk megnyitni, ez az alapértelmezett működés:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.Open(&amp;#039;/home/user/nincsilyen.img&amp;#039;)&lt;br /&gt;
 ERROR 4: `/home/user/nincsilyen.img&amp;#039; does not exist in the file system,&lt;br /&gt;
 and is not recognised as a supported dataset name.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ha mégis használni szeretnénk a kivételeket, akkor ezeket explicit módon engedélyezni kell az &amp;lt;code&amp;gt;UseExceptions()&amp;lt;/code&amp;gt; meghívásával. &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.UseExceptions()        # Kivetelek engedelyezese&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.Open(&amp;#039;/home/user/nincsilyen.img&amp;#039;)&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
 RuntimeError: `/home/user/nincsilyen.img&amp;#039; does not exist in the file system,&lt;br /&gt;
 and is not recognised as a supported dataset name.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez megkötés a visszamenőleges kompatibilitás miatt szükséges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== A Python összeomlik, ha egy olyan objektumot használunk, ami összefügg egy már előzőleg törölt objektummal ====&lt;br /&gt;
&lt;br /&gt;
A GDAL és OGR objektumok valójában C++ objektumok, amik mutatókkal kapcsolódnak egymáshoz. Megtörténhet, hogy a Python garbage collector felszabadítja egy objektum tárhelyét (vagy a programozó töröl egy objektumot &amp;lt;code&amp;gt;del&amp;lt;/code&amp;gt;-lel), miközben egy másik objektum mutatóval hivatkozik rá. Ilyenkor a Python összeomlik. A következő példában egy bemeneti állományt megnyitva létrehozunk egy objektumot, majd egy másikat, ami a háttérben hivatkozik az elsőre (C++ mutatóval). Ezután kitöröljük az első objektumot és meghívjuk a másodiknak egy metódusát. Ennyi elég ahhoz, hogy a Python összeomoljon.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; adat = gdal.Open(&amp;#039;/home/user/valami.img&amp;#039;)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; band = adat.GetRasterBand(1) # Egy uj objektum letrehozasa, ami kapcsolatban van az adat objektummal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; del adat           # Toroljuk az adat objektumot&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; band.GetMinimum();    # A band objektum egy metodusanak hivasa es a Python osszeomlik&lt;br /&gt;
 Segmentation fault (core dumped)&lt;br /&gt;
&lt;br /&gt;
A következő példában a garbage collector törli automatikusan az &amp;lt;code&amp;gt;osgeo.gdal.Dataset&amp;lt;/code&amp;gt; típusú objektumot még mielőtt a &amp;lt;code&amp;gt;GetMinimum()&amp;lt;/code&amp;gt; metódus meghívódna, mert a &amp;lt;code&amp;gt;osgeo.gdal.Band&amp;lt;/code&amp;gt; objektum létrehozása után erre már nincs szükség (a Python &amp;quot;logikája&amp;quot; szerint, ami nem tudhat a háttérben levő C++ implementáció részleteiről).&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print gdal.Open(&amp;#039;/home/user/valami.img&amp;#039;).GetRasterBand(1).GetMinimum()&lt;br /&gt;
 Segmentation fault (core dumped)&lt;br /&gt;
&lt;br /&gt;
=== Fájlkezelés ===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az GDAL/OGR könyvtárak úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használnak. Például a következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen OGR driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
====Támogatott adatformátumok====&lt;br /&gt;
&lt;br /&gt;
A GDAL segítségével számos raszteres formátumot (állománytípust vagy egyéb adatforrást) tudunk kezelni. Az OGR könyvtár vektoros formátumú fájlokat kezel. A következőkben felsoroljuk a támogatott raszteres illetve vektoros állománytípusokat:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Raszteres adatformátumok (GDAL):&amp;#039;&amp;#039;&amp;#039; [http://www.gdal.org/frmt_various.html#AAIGrid Arc/Info ASCII Grid], [http://www.gdal.org/frmt_various.html#ACE2 ACE2], [http://www.gdal.org/frmt_various.html#ADRG ADRG/ARC Digitilized Raster Graphics (.gen/.thf)], [http://www.gdal.org/frmt_various.html#AIG Arc/Info Binary Grid (.adf)], [http://www.gdal.org/frmt_airsar.html AIRSAR Polarimetric], [http://www.gdal.org/frmt_various.html#ARG Azavea Raster Grid], [http://www.gdal.org/frmt_blx.html Magellan BLX Topo (.blx, .xlb)], [http://www.gdal.org/frmt_bag.html Bathymetry Attributed Grid (.bag)], [http://www.gdal.org/frmt_bmp.html Microsoft Windows Device Independent Bitmap (.bmp)], [http://www.gdal.org/frmt_various.html#BSB BSB Nautical Chart Format (.kap)], [http://www.gdal.org/frmt_various.html#BT VTP Binary Terrain Format (.bt)], [http://www.gdal.org/frmt_cals.html CALS Type I], [http://www.gdal.org/frmt_various.html#CEOS CEOS (Spot for instance)], [http://www.gdal.org/frmt_cosar.html TerraSAR-X Complex SAR Data Product], [http://www.gdal.org/frmt_various.html#CTG USGS LULC Composite Theme Grid], [http://www.gdal.org/frmt_various.html#DDS DirectDraw Surface], [http://www.gdal.org/frmt_various.html#DIMAP Spot DIMAP (metadata.dim)], [http://www.gdal.org/frmt_dods.html DODS / OPeNDAP], [http://www.gdal.org/frmt_various.html#DOQ1 First Generation USGS DOQ (.doq)], [http://www.gdal.org/frmt_various.html#DOQ2 New Labelled USGS DOQ (.doq)], [http://www.gdal.org/frmt_dted.html Military Elevation Data (.dt0, .dt1, .dt2)], [http://www.gdal.org/frmt_various.html#E00GRID Arc/Info Export E00 GRID], [http://www.gdal.org/frmt_various.html#ECRGTOC ECRG Table Of Contents (TOC.xml)], [http://www.gdal.org/frmt_ecw.html ERDAS Compressed Wavelets (.ecw)], [http://www.gdal.org/frmt_various.html#EHdr ESRI .hdr Labelled], [http://www.gdal.org/frmt_various.html#EIR Erdas Imagine Raw], [http://www.gdal.org/frmt_elas.html NASA ELAS], [http://www.gdal.org/frmt_various.html#ENVI ENVI .hdr Labelled Raster], [http://www.gdal.org/frmt_epsilon.html Epsilon - Wavelet compressed images], [http://www.gdal.org/frmt_ers.html ERMapper (.ers)], [http://www.gdal.org/frmt_various.html#Envisat Envisat Image Product (.n1)], [http://www.gdal.org/frmt_fast.html EOSAT FAST Format], [http://www.gdal.org/frmt_various.html#FITS FITS (.fits)], [http://www.gdal.org/frmt_various.html#GenBin Generic Binary (.hdr Labelled)], [http://www.gdal.org/frmt_georaster.html Oracle Spatial GeoRaster], [http://www.gdal.org/frmt_various.html#GFF GSat File Format], [http://www.gdal.org/frmt_gif.html Graphics Interchange Format (.gif)], [http://www.gdal.org/frmt_grib.html WMO GRIB1/GRIB2 (.grb)], [http://www.gdal.org/frmt_various.html#GMT GMT Compatible netCDF], [http://www.gdal.org/frmt_grass.html GRASS Raster Format], [http://www.gdal.org/frmt_various.html#GRASSASCIIGrid GRASS ASCII Grid], [http://www.gdal.org/frmt_various.html#GSAG Golden Software ASCII Grid], [http://www.gdal.org/frmt_various.html#GSBG Golden Software Binary Grid], [http://www.gdal.org/frmt_various.html#GS7BG Golden Software Surfer 7 Binary Grid], [http://www.gdal.org/frmt_gta.html Generic Tagged Arrays (.gta)], [http://www.gdal.org/frmt_gtiff.html TIFF / BigTIFF / GeoTIFF (.tif)], [http://www.gdal.org/frmt_various.html#GXF GXF - Grid eXchange File], [http://www.gdal.org/frmt_hdf4.html Hierarchical Data Format Release 4 (HDF4)], [http://www.gdal.org/frmt_hdf5.html Hierarchical Data Format Release 5 (HDF5)], [http://www.gdal.org/frmt_hf2.html HF2/HFZ heightfield raster], [http://www.gdal.org/frmt_hfa.html Erdas Imagine (.img)], [http://www.gdal.org/frmt_various.html#IDA Image Display and Analysis (WinDisp)], [http://www.gdal.org/frmt_various.html#ILWIS ILWIS Raster Map (.mpr,.mpl)], [http://www.gdal.org/frmt_intergraphraster.html Intergraph Raster], [http://www.gdal.org/frmt_various.html#IRIS IRIS], [http://www.gdal.org/frmt_various.html#ISCE ISCE raster], [http://www.gdal.org/frmt_isis2.html USGS Astrogeology ISIS cube (Version 2)], [http://www.gdal.org/frmt_isis3.html USGS Astrogeology ISIS cube (Version 3)], [http://www.gdal.org/frmt_palsar.html JAXA PALSAR Product Reader (Level 1.1/1.5)], [http://www.gdal.org/frmt_various.html#JDEM Japanese DEM (.mem)], [http://www.gdal.org/frmt_jpeg.html JPEG JFIF (.jpg)], [http://www.gdal.org/frmt_jpegls.html JPEG-LS], [http://www.gdal.org/frmt_jpeg2000.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2ecw.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2kak.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2mrsid.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2openjpeg.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jpipkak.html JPIP (based on Kakadu)], [http://www.gdal.org/frmt_kea.html KEA], [http://www.gdal.org/frmt_various.html#KRO KRO], [http://www.gdal.org/frmt_l1b.html NOAA Polar Orbiter Level 1b Data Set (AVHRR)], [http://www.gdal.org/frmt_various.html#LAN Erdas 7.x .LAN and .GIS], [http://www.gdal.org/frmt_lcp.html FARSITE v.4 LCP Format], [http://www.gdal.org/frmt_leveller.html Daylon Leveller Heightfield], [http://www.gdal.org/frmt_mbtiles.html MBTiles], [http://www.gdal.org/frmt_map.html OziExplorer .MAP], [http://www.gdal.org/frmt_mem.html In Memory Raster], [http://www.gdal.org/frmt_various.html#MFF Vexcel MFF], [http://www.gdal.org/frmt_mff2.html Vexcel MFF2], [http://www.gdal.org/frmt_mrsid_lidar.html MG4 Encoded Lidar], [http://www.gdal.org/frmt_marfa.html Meta Raster Format], [http://www.gdal.org/frmt_mrsid.html Multi-resolution Seamless Image Database], [http://www.gdal.org/frmt_msg.html Meteosat Second Generation], [http://www.gdal.org/frmt_msgn.html EUMETSAT Archive native (.nat)], [http://www.gdal.org/frmt_various.html#NDF NLAPS Data Format], [http://www.gdal.org/frmt_ngsgeoid.html NOAA NGS Geoid Height Grids], [http://www.gdal.org/frmt_nitf.html NITF (.ntf, .nsf, .gn?, .hr?, .ja?, .jg?, .jn?, .lf?, .on?, .tl?, .tp?, etc.)], [http://www.gdal.org/frmt_netcdf.html NetCDF], [http://www.gdal.org/frmt_ogdi.html OGDI Bridge], [http://www.gdal.org/frmt_ozi.html OZI OZF2/OZFX3], [http://www.gdal.org/frmt_various.html#PAux PCI .aux Labelled], [http://www.gdal.org/frmt_pcidsk.html PCI Geomatics Database File], [http://www.gdal.org/frmt_various.html#PCRaster PCRaster], [http://www.gdal.org/frmt_pdf.html Geospatial PDF], [http://www.gdal.org/frmt_pds.html NASA Planetary Data System], [http://www.gdal.org/frmt_plmosaic.html Planet Labs Mosaics API], [http://www.gdal.org/frmt_various.html#PNG Portable Network Graphics (.png)], [http://www.gdal.org/frmt_various.html#PNM Netpbm (.ppm,.pgm)], [http://www.gdal.org/frmt_r.html R Object Data Store], [http://www.gdal.org/frmt_rasdaman.html Rasdaman], [http://www.gdal.org/frmt_rasterlite.html Rasterlite - Rasters in SQLite DB], [http://www.gdal.org/frmt_rik.html Swedish Grid RIK (.rik)], [http://www.gdal.org/frmt_rmf.html Raster Matrix Format (*.rsw, .mtw)], [http://www.gdal.org/frmt_various.html#ROI_PAC ROI_PAC Raster], [http://www.gdal.org/frmt_various.html#RPFTOC Raster Product Format/RPF (CADRG, CIB)], [http://www.gdal.org/frmt_rs2.html RadarSat2 XML (product.xml)], [http://www.gdal.org/frmt_Idrisi.html Idrisi Raster], [http://www.gdal.org/frmt_safe.html Sentinel 1 SAR SAFE (manifest.safe)], [http://www.gdal.org/frmt_sentinel2.html Sentinel 2], [http://www.gdal.org/frmt_various.html#SAGA SAGA GIS Binary format], [http://www.gdal.org/frmt_various.html#SAR_CEOS SAR CEOS], [http://www.gdal.org/frmt_sde.html ArcSDE Raster], [http://www.gdal.org/frmt_various.html#SDTS USGS SDTS DEM (*CATD.DDF)], [http://www.gdal.org/frmt_various.html#SGI SGI Image Format], [http://www.gdal.org/frmt_various.html#SNODAS Snow Data Assimilation System], [http://www.gdal.org/frmt_various.html#SRP Standard Raster Product (ASRP/USRP)], [http://www.gdal.org/frmt_various.html#SRTMHGT SRTM HGT Format], [http://www.gdal.org/frmt_terragen.html Terragen Heightfield (.ter)], [http://www.gdal.org/frmt_usgsdem.html USGS ASCII DEM / CDED (.dem)], [http://www.gdal.org/frmt_wcs.html OGC Web Coverage Service], [http://www.gdal.org/frmt_webp.html WEBP], [http://www.gdal.org/frmt_wms.html OGC Web Map Service, and TMS, WorldWind, On Earth tiled, VirtualEarth, ArcGIS REST, IIP)], [http://www.gdal.org/frmt_wmts.html OGC Web Map Tile Service], [http://www.gdal.org/frmt_various.html#XPM X11 Pixmap (.xpm)], [http://www.gdal.org/frmt_xyz.html ASCII Gridded XYZ], [http://www.gdal.org/frmt_various.html#ZMap ZMap Plus Grid], [http://www.gdal.org/frmt_hfa.html here]&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Vektorgrafikus adatformátumok (OGR):&amp;#039;&amp;#039;&amp;#039; [http://www.gdal.org/drv_aeronavfaa.html Aeronav FAA files], [http://www.gdal.org/drv_amigocloud.html AmigoCloud API], [http://www.gdal.org/drv_ao.html ESRI ArcObjects], [http://www.gdal.org/drv_avcbin.html Arc/Info Binary Coverage], [http://www.gdal.org/drv_avce00.html Arc/Info .E00 (ASCII) Coverage], [http://www.gdal.org/drv_arcgen.html Arc/Info Generate], [http://www.gdal.org/drv_bna.html Atlas BNA], [http://www.gdal.org/drv_dwg.html AutoCAD DWG], [http://www.gdal.org/drv_dxf.html AutoCAD DXF], [http://www.gdal.org/drv_cartodb.html CartoDB], [http://www.gdal.org/drv_cloudant.html Cloudant / CouchDB], [http://www.gdal.org/drv_couchdb.html CouchDB / GeoCouch], [http://www.gdal.org/drv_csv.html Comma Separated Value (.csv)], [http://www.gdal.org/drv_csw.html OGC CSW (Catalog Service for the Web)], [http://www.gdal.org/drv_vfk.html Czech Cadastral Exchange Data Format], [http://www.gdal.org/drv_db2.html DB2 Spatial], [http://www.gdal.org/drv_dods.html DODS/OPeNDAP], [http://www.gdal.org/drv_edigeo.html EDIGEO], [http://www.gdal.org/drv_elasticsearch.html ElasticSearch], [http://www.gdal.org/drv_filegdb.html ESRI FileGDB], [http://www.gdal.org/drv_pgeo.html ESRI Personal GeoDatabase], [http://www.gdal.org/drv_sde.html ESRI ArcSDE], [http://www.gdal.org/drv_shapefile.html ESRI Shapefile / DBF], [http://www.gdal.org/drv_fme.html FMEObjects Gateway], [http://www.gdal.org/drv_geojson.html GeoJSON], [http://www.gdal.org/drv_geoconcept.html G&amp;amp;eacute;oconcept Export], [http://www.gdal.org/drv_geomedia.html Geomedia .mdb], [http://www.gdal.org/drv_geopackage.html GeoPackage], [http://www.gdal.org/drv_georss.html GeoRSS], [http://www.gdal.org/drv_gft.html Google Fusion Tables], [http://www.gdal.org/drv_gml.html GML], [http://www.gdal.org/drv_gmt.html GMT], [http://www.gdal.org/drv_gpsbabel.html GPSBabel], [http://www.gdal.org/drv_gpx.html GPX], [http://www.gdal.org/drv_grass.html GRASS Vector Format], [http://www.gdal.org/drv_gtm.html GPSTrackMaker (.gtm, .gtz)], [http://www.gdal.org/drv_htf.html Hydrographic Transfer Format], [http://www.gdal.org/drv_idrisi.html Idrisi Vector (.VCT)], [http://www.gdal.org/drv_idb.html Informix DataBlade], [http://www.gdal.org/drv_ili.html INTERLIS], [http://www.gdal.org/drv_ingres.html INGRES], [http://www.gdal.org/drv_jml.html JML], [http://www.gdal.org/drv_kml.html KML], [http://www.gdal.org/drv_libkml.html LIBKML], [http://www.gdal.org/drv_mitab.html Mapinfo File], [http://www.gdal.org/drv_dgn.html Microstation DGN], [http://www.gdal.org/drv_mdb.html Access MDB (PGeo and Geomedia capable)], [http://www.gdal.org/drv_memory.html Memory], [http://www.gdal.org/drv_mongodb.html MongoDB], [http://www.gdal.org/drv_mysql.html MySQL], [http://www.gdal.org/drv_nas.html NAS - ALKIS], [http://www.gdal.org/drv_oci.html Oracle Spatial], [http://www.gdal.org/drv_odbc.html ODBC], [http://www.gdal.org/drv_mssqlspatial.html MS SQL Spatial], [http://www.gdal.org/drv_ods.html Open Document Spreadsheet], [http://www.gdal.org/drv_ogdi.html OGDI Vectors (VPF, VMAP, DCW)], [http://www.gdal.org/drv_openair.html OpenAir], [http://www.gdal.org/drv_openfilegdb.html ESRI FileGDB], [http://www.gdal.org/drv_osm.html OpenStreetMap XML and PBF], [http://www.gdal.org/drv_pds.html PDS], [http://www.gdal.org/drv_plscenes.html Planet Labs Scenes API], [http://www.gdal.org/drv_pgdump.html PostgreSQL SQL dump], [http://www.gdal.org/drv_pg.html PostgreSQL/PostGIS], [http://www.gdal.org/drv_s57.html S-57 (ENC)], [http://www.gdal.org/drv_sdts.html SDTS], [http://www.gdal.org/drv_segukooa.html SEG-P1 / UKOOA P1/90], [http://www.gdal.org/drv_segy.html SEG-Y], [http://www.gdal.org/drv_selafin.html Selafin/Seraphin format], [http://www.gdal.org/drv_sqlite.html SQLite/SpatiaLite], [http://www.gdal.org/drv_sua.html SUA], [http://www.gdal.org/drv_svg.html SVG], [http://www.gdal.org/drv_sxf.html Storage and eXchange Format], [http://www.gdal.org/drv_ntf.html UK .NTF], [http://www.gdal.org/drv_tiger.html U.S. Census TIGER/Line], [http://www.gdal.org/drv_vrt.html VRT - Virtual Datasource], [http://www.gdal.org/drv_wfs.html OGC WFS (Web Feature Service)], [http://www.gdal.org/drv_xls.html MS Excel format], [http://www.gdal.org/drv_xlsx.html MS Office Open XML spreadsheet], [http://www.gdal.org/drv_xplane.html X-Plane/Flightgear aeronautical data], [http://www.gdal.org/drv_vdv.html VDV-451/VDV-452/IDF], [http://www.gdal.org/drv_walk.html Walk], [http://www.gdal.org/drv_wasp.html WAsP .map format].&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése===&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;layer = datasource.GetLayer()&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
===Attribútumok===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Népsűrűség ábrázolása térképen===&lt;br /&gt;
&lt;br /&gt;
Az alábbi kód, egy meglévő shapefile rétegre egy másikat generál, egy megadott atríbútum táblából, aminek segítségével szemlélteti, hogy az adott területeken mekkora a népsűrűség. Ehhez pontokat generál, egy pont 100 embert reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
import random&lt;br /&gt;
# shapefile megnyitasa ogr reteg letrehozasa elso feature lekerese&lt;br /&gt;
source = ogr.Open(&amp;quot;GIS_CensusTract_poly.shp&amp;quot;)&lt;br /&gt;
county = source.GetLayer(&amp;quot;GIS_CensusTract_poly&amp;quot;)&lt;br /&gt;
feature = county.GetNextFeature()&lt;br /&gt;
# kimeneti shapefile es reteg letrehozasa&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
output = driver.CreateDataSource(&amp;quot;PopDensity.shp&amp;quot;)&lt;br /&gt;
dots = output.CreateLayer(&amp;quot;PopDensity&amp;quot;, geom_type=ogr.wkbPoint)&lt;br /&gt;
while feature is not None:&lt;br /&gt;
  field_index = feature.GetFieldIndex(&amp;quot;POPULAT11&amp;quot;)&lt;br /&gt;
  population = int(feature.GetField(field_index))&lt;br /&gt;
  # 1 pont szaz embert reprezental &lt;br /&gt;
  density = population / 100&lt;br /&gt;
  count = 0   &lt;br /&gt;
  while count &amp;lt; density:&lt;br /&gt;
    geometry = feature.GetGeometryRef()&lt;br /&gt;
    minx, maxx, miny, maxy = geometry.GetEnvelope()&lt;br /&gt;
    x = random.uniform(minx,maxx)&lt;br /&gt;
    y = random.uniform(miny,maxy)&lt;br /&gt;
    f = ogr.Feature(feature_def=dots.GetLayerDefn())&lt;br /&gt;
    wkt = &amp;quot;POINT(%f %f)&amp;quot; % (x,y)&lt;br /&gt;
    point = ogr.CreateGeometryFromWkt(wkt)&lt;br /&gt;
    # Csak akkor hasznaljuk a pontot, ha benne van az adott alakzatban&lt;br /&gt;
    if feature.GetGeometryRef().Contains(point):&lt;br /&gt;
        f.SetGeometryDirectly(point)&lt;br /&gt;
        dots.CreateFeature(f)&lt;br /&gt;
        count += 1&lt;br /&gt;
    # objektum eltorlese&lt;br /&gt;
    f.Destroy()&lt;br /&gt;
  feature = county.GetNextFeature()&lt;br /&gt;
source.Destroy()&lt;br /&gt;
output.Destroy()  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hivatkozások ==&lt;br /&gt;
&lt;br /&gt;
http://www.gdal.org/&lt;br /&gt;
&lt;br /&gt;
https://pcjericks.github.io/py-gdalogr-cookbook/&lt;br /&gt;
&lt;br /&gt;
http://www.osgeo.org/gdal_ogr&lt;br /&gt;
&lt;br /&gt;
http://geoexamples.com/&lt;br /&gt;
&lt;br /&gt;
http://www.digital-geography.com/create-and-edit-shapefiles-with-python-only/&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=244</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=244"/>
		<updated>2016-06-19T18:22:08Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: Függőségek alfejezet tartalma a Telepítés alfejezetbe&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt &lt;br /&gt;
könyvtárakhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek a funkciók. A két könyvtár Python kötését a [http://www.swig.org/index.php SWIG] eszköz segítségével generálják. Az alkalmazásprogramozási felület (API) általában pontosan követi a GDAL és OGR könyvtárak C++  implementációiban használt osztályok és eljárások megnevezéseit. Az elérhető hivatalos dokumentáció (http://gdal.org/python) is automatikusan generált, a meglévő C/C++ függvények leírásai alapján. &lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
A GDAL/OGR könyvtárak használatához a következőkre van szükség:&lt;br /&gt;
*    Python 2.X (Python 3.X a GDAL 1.7.0 verziójától kezdődően). Python 2-höz ajánlott 2.3 és 2.7 közötti verziót használni.&lt;br /&gt;
*    libgdal (1.5.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (gdal-devel)&lt;br /&gt;
*    numpy (1.0.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (numpy-devel)&lt;br /&gt;
A numpy telepítése nem feltétlenül szükséges, viszont sok példaprogram és eszköz használja, ezért ajánlott.&lt;br /&gt;
&lt;br /&gt;
=== GNU/Linux ===&lt;br /&gt;
A GDAL/OGR könyvtár és a Python kötések telepítését elvégezhetjük [https://docs.python.org/2/library/distutils.html distutils] vagy [https://pypi.python.org/pypi/setuptools setuptools] segítségével (az utóbbi használata ajánlott). Setuptools-t használva a telepítést a következő paranccsal végezhetjük el:&lt;br /&gt;
&lt;br /&gt;
 $ sudo easy_install GDAL&lt;br /&gt;
&lt;br /&gt;
Ha nem szeretnénk feltétlenül a legfrissebb verziót használni és megelégszünk az adott Linux disztribúció repozitóriumában fellelhető verzióval, akkor talán legegyszerűbb a csomagkezelőt használni a telepítésre. Ubuntu operációs rendszeren például a következő paranccsal telepíthető a GDAL/OGR könyvtárak Python kötése:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install gdal-bin python-gdal&lt;br /&gt;
&lt;br /&gt;
Ha [https://trac.osgeo.org/gdal/wiki/DownloadSource forrásból] szeretnénk lefordítani a legújabb verziót, akkor a Python kötéshez a &amp;lt;code&amp;gt;--with-python&amp;lt;/code&amp;gt; kapcsolót kell használni:&lt;br /&gt;
&lt;br /&gt;
 $ ./configure --with-python&lt;br /&gt;
&lt;br /&gt;
Ezután a szokásos módon a &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; eszköz elvégzi a fordítást és a telepítést:&lt;br /&gt;
&lt;br /&gt;
 $ make&lt;br /&gt;
 $ make install&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
A GDAL/OGR könyvtár Python kötésének telepítéséhez a következő lépésekre lesz szükség:&lt;br /&gt;
* [http://download.osgeo.org/gdal/win32/1.6/ GDAL Windows bináris fájlok] letöltése és kicsomagolása. Alapesetben csak a gdalwin32exe160.zip nevű fájlra lesz szükség. A könyvtárban fellelhető többi fájl bővítmények fejlesztéséhez szükséges. A zip fájlt bárhova ki lehet csomagolni, példa gyanánt a &amp;lt;code&amp;gt;C:\gdalwin32-1.6&amp;lt;/code&amp;gt; könyvtárat fogjuk használni. A kicsomagolás után a &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt; rendszerváltozót [http://www.computerhope.com/issues/ch000549.htm módosítani] kell, hozzá kell adni a &amp;lt;code&amp;gt;C:\gdalwin32-1.6\bin&amp;lt;/code&amp;gt; elérési útvonalat.&lt;br /&gt;
* Létre kell hozni a &amp;lt;code&amp;gt;GDAL_DATA&amp;lt;/code&amp;gt; nevű rendszerváltozót, aminek az értéke az adatokat tartalmazó könyvtár neve, jelen esetben &amp;lt;code&amp;gt;C:\gdalwin32-1.6\data&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Szükséges lehet az operációs rendszer újraindítása.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
A GDAL Python kötésében öt főmodult érhetünk el a következő módon:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import ogr&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import osr&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal_array&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdalconst&lt;br /&gt;
&lt;br /&gt;
=== Buktatók ===&lt;br /&gt;
&lt;br /&gt;
Annak ellenére, hogy a Python kötések használata teljesen elrejti a mögöttes C++ könyvtárat, használata pár apró dologban mégis eltér a megszokott Python modulok használatától, amire érdemes figyelnie a Python programozónak:&lt;br /&gt;
&lt;br /&gt;
==== A Python kötés nem használ kivételeket ====&lt;br /&gt;
&lt;br /&gt;
A Python kötés alapértelmezetten nem használja a kivételeket, ehelyett meghatározott hibaértéket térít vissza az adott függvény, és egy hibaüzenet jelenik meg a standard kimeneten. Például ha egy nemlétező fájlt próbálunk megnyitni, ez az alapértelmezett működés:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.Open(&amp;#039;/home/user/nincsilyen.img&amp;#039;)&lt;br /&gt;
 ERROR 4: `/home/user/nincsilyen.img&amp;#039; does not exist in the file system,&lt;br /&gt;
 and is not recognised as a supported dataset name.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ha mégis használni szeretnénk a kivételeket, akkor ezeket explicit módon engedélyezni kell az &amp;lt;code&amp;gt;UseExceptions()&amp;lt;/code&amp;gt; meghívásával. &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.UseExceptions()        # Kivetelek engedelyezese&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.Open(&amp;#039;/home/user/nincsilyen.img&amp;#039;)&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
 RuntimeError: `/home/user/nincsilyen.img&amp;#039; does not exist in the file system,&lt;br /&gt;
 and is not recognised as a supported dataset name.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez megkötés a visszamenőleges kompatibilitás miatt szükséges.  &lt;br /&gt;
&lt;br /&gt;
=== Fájlkezelés ===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az GDAL/OGR könyvtárak úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használnak. Például a következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen OGR driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
====Támogatott adatformátumok====&lt;br /&gt;
&lt;br /&gt;
A GDAL segítségével számos raszteres formátumot (állománytípust vagy egyéb adatforrást) tudunk kezelni. Az OGR könyvtár vektoros formátumú fájlokat kezel. A következőkben felsoroljuk a támogatott raszteres illetve vektoros állománytípusokat:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Raszteres adatformátumok (GDAL):&amp;#039;&amp;#039;&amp;#039; [http://www.gdal.org/frmt_various.html#AAIGrid Arc/Info ASCII Grid], [http://www.gdal.org/frmt_various.html#ACE2 ACE2], [http://www.gdal.org/frmt_various.html#ADRG ADRG/ARC Digitilized Raster Graphics (.gen/.thf)], [http://www.gdal.org/frmt_various.html#AIG Arc/Info Binary Grid (.adf)], [http://www.gdal.org/frmt_airsar.html AIRSAR Polarimetric], [http://www.gdal.org/frmt_various.html#ARG Azavea Raster Grid], [http://www.gdal.org/frmt_blx.html Magellan BLX Topo (.blx, .xlb)], [http://www.gdal.org/frmt_bag.html Bathymetry Attributed Grid (.bag)], [http://www.gdal.org/frmt_bmp.html Microsoft Windows Device Independent Bitmap (.bmp)], [http://www.gdal.org/frmt_various.html#BSB BSB Nautical Chart Format (.kap)], [http://www.gdal.org/frmt_various.html#BT VTP Binary Terrain Format (.bt)], [http://www.gdal.org/frmt_cals.html CALS Type I], [http://www.gdal.org/frmt_various.html#CEOS CEOS (Spot for instance)], [http://www.gdal.org/frmt_cosar.html TerraSAR-X Complex SAR Data Product], [http://www.gdal.org/frmt_various.html#CTG USGS LULC Composite Theme Grid], [http://www.gdal.org/frmt_various.html#DDS DirectDraw Surface], [http://www.gdal.org/frmt_various.html#DIMAP Spot DIMAP (metadata.dim)], [http://www.gdal.org/frmt_dods.html DODS / OPeNDAP], [http://www.gdal.org/frmt_various.html#DOQ1 First Generation USGS DOQ (.doq)], [http://www.gdal.org/frmt_various.html#DOQ2 New Labelled USGS DOQ (.doq)], [http://www.gdal.org/frmt_dted.html Military Elevation Data (.dt0, .dt1, .dt2)], [http://www.gdal.org/frmt_various.html#E00GRID Arc/Info Export E00 GRID], [http://www.gdal.org/frmt_various.html#ECRGTOC ECRG Table Of Contents (TOC.xml)], [http://www.gdal.org/frmt_ecw.html ERDAS Compressed Wavelets (.ecw)], [http://www.gdal.org/frmt_various.html#EHdr ESRI .hdr Labelled], [http://www.gdal.org/frmt_various.html#EIR Erdas Imagine Raw], [http://www.gdal.org/frmt_elas.html NASA ELAS], [http://www.gdal.org/frmt_various.html#ENVI ENVI .hdr Labelled Raster], [http://www.gdal.org/frmt_epsilon.html Epsilon - Wavelet compressed images], [http://www.gdal.org/frmt_ers.html ERMapper (.ers)], [http://www.gdal.org/frmt_various.html#Envisat Envisat Image Product (.n1)], [http://www.gdal.org/frmt_fast.html EOSAT FAST Format], [http://www.gdal.org/frmt_various.html#FITS FITS (.fits)], [http://www.gdal.org/frmt_various.html#GenBin Generic Binary (.hdr Labelled)], [http://www.gdal.org/frmt_georaster.html Oracle Spatial GeoRaster], [http://www.gdal.org/frmt_various.html#GFF GSat File Format], [http://www.gdal.org/frmt_gif.html Graphics Interchange Format (.gif)], [http://www.gdal.org/frmt_grib.html WMO GRIB1/GRIB2 (.grb)], [http://www.gdal.org/frmt_various.html#GMT GMT Compatible netCDF], [http://www.gdal.org/frmt_grass.html GRASS Raster Format], [http://www.gdal.org/frmt_various.html#GRASSASCIIGrid GRASS ASCII Grid], [http://www.gdal.org/frmt_various.html#GSAG Golden Software ASCII Grid], [http://www.gdal.org/frmt_various.html#GSBG Golden Software Binary Grid], [http://www.gdal.org/frmt_various.html#GS7BG Golden Software Surfer 7 Binary Grid], [http://www.gdal.org/frmt_gta.html Generic Tagged Arrays (.gta)], [http://www.gdal.org/frmt_gtiff.html TIFF / BigTIFF / GeoTIFF (.tif)], [http://www.gdal.org/frmt_various.html#GXF GXF - Grid eXchange File], [http://www.gdal.org/frmt_hdf4.html Hierarchical Data Format Release 4 (HDF4)], [http://www.gdal.org/frmt_hdf5.html Hierarchical Data Format Release 5 (HDF5)], [http://www.gdal.org/frmt_hf2.html HF2/HFZ heightfield raster], [http://www.gdal.org/frmt_hfa.html Erdas Imagine (.img)], [http://www.gdal.org/frmt_various.html#IDA Image Display and Analysis (WinDisp)], [http://www.gdal.org/frmt_various.html#ILWIS ILWIS Raster Map (.mpr,.mpl)], [http://www.gdal.org/frmt_intergraphraster.html Intergraph Raster], [http://www.gdal.org/frmt_various.html#IRIS IRIS], [http://www.gdal.org/frmt_various.html#ISCE ISCE raster], [http://www.gdal.org/frmt_isis2.html USGS Astrogeology ISIS cube (Version 2)], [http://www.gdal.org/frmt_isis3.html USGS Astrogeology ISIS cube (Version 3)], [http://www.gdal.org/frmt_palsar.html JAXA PALSAR Product Reader (Level 1.1/1.5)], [http://www.gdal.org/frmt_various.html#JDEM Japanese DEM (.mem)], [http://www.gdal.org/frmt_jpeg.html JPEG JFIF (.jpg)], [http://www.gdal.org/frmt_jpegls.html JPEG-LS], [http://www.gdal.org/frmt_jpeg2000.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2ecw.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2kak.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2mrsid.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2openjpeg.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jpipkak.html JPIP (based on Kakadu)], [http://www.gdal.org/frmt_kea.html KEA], [http://www.gdal.org/frmt_various.html#KRO KRO], [http://www.gdal.org/frmt_l1b.html NOAA Polar Orbiter Level 1b Data Set (AVHRR)], [http://www.gdal.org/frmt_various.html#LAN Erdas 7.x .LAN and .GIS], [http://www.gdal.org/frmt_lcp.html FARSITE v.4 LCP Format], [http://www.gdal.org/frmt_leveller.html Daylon Leveller Heightfield], [http://www.gdal.org/frmt_mbtiles.html MBTiles], [http://www.gdal.org/frmt_map.html OziExplorer .MAP], [http://www.gdal.org/frmt_mem.html In Memory Raster], [http://www.gdal.org/frmt_various.html#MFF Vexcel MFF], [http://www.gdal.org/frmt_mff2.html Vexcel MFF2], [http://www.gdal.org/frmt_mrsid_lidar.html MG4 Encoded Lidar], [http://www.gdal.org/frmt_marfa.html Meta Raster Format], [http://www.gdal.org/frmt_mrsid.html Multi-resolution Seamless Image Database], [http://www.gdal.org/frmt_msg.html Meteosat Second Generation], [http://www.gdal.org/frmt_msgn.html EUMETSAT Archive native (.nat)], [http://www.gdal.org/frmt_various.html#NDF NLAPS Data Format], [http://www.gdal.org/frmt_ngsgeoid.html NOAA NGS Geoid Height Grids], [http://www.gdal.org/frmt_nitf.html NITF (.ntf, .nsf, .gn?, .hr?, .ja?, .jg?, .jn?, .lf?, .on?, .tl?, .tp?, etc.)], [http://www.gdal.org/frmt_netcdf.html NetCDF], [http://www.gdal.org/frmt_ogdi.html OGDI Bridge], [http://www.gdal.org/frmt_ozi.html OZI OZF2/OZFX3], [http://www.gdal.org/frmt_various.html#PAux PCI .aux Labelled], [http://www.gdal.org/frmt_pcidsk.html PCI Geomatics Database File], [http://www.gdal.org/frmt_various.html#PCRaster PCRaster], [http://www.gdal.org/frmt_pdf.html Geospatial PDF], [http://www.gdal.org/frmt_pds.html NASA Planetary Data System], [http://www.gdal.org/frmt_plmosaic.html Planet Labs Mosaics API], [http://www.gdal.org/frmt_various.html#PNG Portable Network Graphics (.png)], [http://www.gdal.org/frmt_various.html#PNM Netpbm (.ppm,.pgm)], [http://www.gdal.org/frmt_r.html R Object Data Store], [http://www.gdal.org/frmt_rasdaman.html Rasdaman], [http://www.gdal.org/frmt_rasterlite.html Rasterlite - Rasters in SQLite DB], [http://www.gdal.org/frmt_rik.html Swedish Grid RIK (.rik)], [http://www.gdal.org/frmt_rmf.html Raster Matrix Format (*.rsw, .mtw)], [http://www.gdal.org/frmt_various.html#ROI_PAC ROI_PAC Raster], [http://www.gdal.org/frmt_various.html#RPFTOC Raster Product Format/RPF (CADRG, CIB)], [http://www.gdal.org/frmt_rs2.html RadarSat2 XML (product.xml)], [http://www.gdal.org/frmt_Idrisi.html Idrisi Raster], [http://www.gdal.org/frmt_safe.html Sentinel 1 SAR SAFE (manifest.safe)], [http://www.gdal.org/frmt_sentinel2.html Sentinel 2], [http://www.gdal.org/frmt_various.html#SAGA SAGA GIS Binary format], [http://www.gdal.org/frmt_various.html#SAR_CEOS SAR CEOS], [http://www.gdal.org/frmt_sde.html ArcSDE Raster], [http://www.gdal.org/frmt_various.html#SDTS USGS SDTS DEM (*CATD.DDF)], [http://www.gdal.org/frmt_various.html#SGI SGI Image Format], [http://www.gdal.org/frmt_various.html#SNODAS Snow Data Assimilation System], [http://www.gdal.org/frmt_various.html#SRP Standard Raster Product (ASRP/USRP)], [http://www.gdal.org/frmt_various.html#SRTMHGT SRTM HGT Format], [http://www.gdal.org/frmt_terragen.html Terragen Heightfield (.ter)], [http://www.gdal.org/frmt_usgsdem.html USGS ASCII DEM / CDED (.dem)], [http://www.gdal.org/frmt_wcs.html OGC Web Coverage Service], [http://www.gdal.org/frmt_webp.html WEBP], [http://www.gdal.org/frmt_wms.html OGC Web Map Service, and TMS, WorldWind, On Earth tiled, VirtualEarth, ArcGIS REST, IIP)], [http://www.gdal.org/frmt_wmts.html OGC Web Map Tile Service], [http://www.gdal.org/frmt_various.html#XPM X11 Pixmap (.xpm)], [http://www.gdal.org/frmt_xyz.html ASCII Gridded XYZ], [http://www.gdal.org/frmt_various.html#ZMap ZMap Plus Grid], [http://www.gdal.org/frmt_hfa.html here]&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Vektorgrafikus adatformátumok (OGR):&amp;#039;&amp;#039;&amp;#039; [http://www.gdal.org/drv_aeronavfaa.html Aeronav FAA files], [http://www.gdal.org/drv_amigocloud.html AmigoCloud API], [http://www.gdal.org/drv_ao.html ESRI ArcObjects], [http://www.gdal.org/drv_avcbin.html Arc/Info Binary Coverage], [http://www.gdal.org/drv_avce00.html Arc/Info .E00 (ASCII) Coverage], [http://www.gdal.org/drv_arcgen.html Arc/Info Generate], [http://www.gdal.org/drv_bna.html Atlas BNA], [http://www.gdal.org/drv_dwg.html AutoCAD DWG], [http://www.gdal.org/drv_dxf.html AutoCAD DXF], [http://www.gdal.org/drv_cartodb.html CartoDB], [http://www.gdal.org/drv_cloudant.html Cloudant / CouchDB], [http://www.gdal.org/drv_couchdb.html CouchDB / GeoCouch], [http://www.gdal.org/drv_csv.html Comma Separated Value (.csv)], [http://www.gdal.org/drv_csw.html OGC CSW (Catalog Service for the Web)], [http://www.gdal.org/drv_vfk.html Czech Cadastral Exchange Data Format], [http://www.gdal.org/drv_db2.html DB2 Spatial], [http://www.gdal.org/drv_dods.html DODS/OPeNDAP], [http://www.gdal.org/drv_edigeo.html EDIGEO], [http://www.gdal.org/drv_elasticsearch.html ElasticSearch], [http://www.gdal.org/drv_filegdb.html ESRI FileGDB], [http://www.gdal.org/drv_pgeo.html ESRI Personal GeoDatabase], [http://www.gdal.org/drv_sde.html ESRI ArcSDE], [http://www.gdal.org/drv_shapefile.html ESRI Shapefile / DBF], [http://www.gdal.org/drv_fme.html FMEObjects Gateway], [http://www.gdal.org/drv_geojson.html GeoJSON], [http://www.gdal.org/drv_geoconcept.html G&amp;amp;eacute;oconcept Export], [http://www.gdal.org/drv_geomedia.html Geomedia .mdb], [http://www.gdal.org/drv_geopackage.html GeoPackage], [http://www.gdal.org/drv_georss.html GeoRSS], [http://www.gdal.org/drv_gft.html Google Fusion Tables], [http://www.gdal.org/drv_gml.html GML], [http://www.gdal.org/drv_gmt.html GMT], [http://www.gdal.org/drv_gpsbabel.html GPSBabel], [http://www.gdal.org/drv_gpx.html GPX], [http://www.gdal.org/drv_grass.html GRASS Vector Format], [http://www.gdal.org/drv_gtm.html GPSTrackMaker (.gtm, .gtz)], [http://www.gdal.org/drv_htf.html Hydrographic Transfer Format], [http://www.gdal.org/drv_idrisi.html Idrisi Vector (.VCT)], [http://www.gdal.org/drv_idb.html Informix DataBlade], [http://www.gdal.org/drv_ili.html INTERLIS], [http://www.gdal.org/drv_ingres.html INGRES], [http://www.gdal.org/drv_jml.html JML], [http://www.gdal.org/drv_kml.html KML], [http://www.gdal.org/drv_libkml.html LIBKML], [http://www.gdal.org/drv_mitab.html Mapinfo File], [http://www.gdal.org/drv_dgn.html Microstation DGN], [http://www.gdal.org/drv_mdb.html Access MDB (PGeo and Geomedia capable)], [http://www.gdal.org/drv_memory.html Memory], [http://www.gdal.org/drv_mongodb.html MongoDB], [http://www.gdal.org/drv_mysql.html MySQL], [http://www.gdal.org/drv_nas.html NAS - ALKIS], [http://www.gdal.org/drv_oci.html Oracle Spatial], [http://www.gdal.org/drv_odbc.html ODBC], [http://www.gdal.org/drv_mssqlspatial.html MS SQL Spatial], [http://www.gdal.org/drv_ods.html Open Document Spreadsheet], [http://www.gdal.org/drv_ogdi.html OGDI Vectors (VPF, VMAP, DCW)], [http://www.gdal.org/drv_openair.html OpenAir], [http://www.gdal.org/drv_openfilegdb.html ESRI FileGDB], [http://www.gdal.org/drv_osm.html OpenStreetMap XML and PBF], [http://www.gdal.org/drv_pds.html PDS], [http://www.gdal.org/drv_plscenes.html Planet Labs Scenes API], [http://www.gdal.org/drv_pgdump.html PostgreSQL SQL dump], [http://www.gdal.org/drv_pg.html PostgreSQL/PostGIS], [http://www.gdal.org/drv_s57.html S-57 (ENC)], [http://www.gdal.org/drv_sdts.html SDTS], [http://www.gdal.org/drv_segukooa.html SEG-P1 / UKOOA P1/90], [http://www.gdal.org/drv_segy.html SEG-Y], [http://www.gdal.org/drv_selafin.html Selafin/Seraphin format], [http://www.gdal.org/drv_sqlite.html SQLite/SpatiaLite], [http://www.gdal.org/drv_sua.html SUA], [http://www.gdal.org/drv_svg.html SVG], [http://www.gdal.org/drv_sxf.html Storage and eXchange Format], [http://www.gdal.org/drv_ntf.html UK .NTF], [http://www.gdal.org/drv_tiger.html U.S. Census TIGER/Line], [http://www.gdal.org/drv_vrt.html VRT - Virtual Datasource], [http://www.gdal.org/drv_wfs.html OGC WFS (Web Feature Service)], [http://www.gdal.org/drv_xls.html MS Excel format], [http://www.gdal.org/drv_xlsx.html MS Office Open XML spreadsheet], [http://www.gdal.org/drv_xplane.html X-Plane/Flightgear aeronautical data], [http://www.gdal.org/drv_vdv.html VDV-451/VDV-452/IDF], [http://www.gdal.org/drv_walk.html Walk], [http://www.gdal.org/drv_wasp.html WAsP .map format].&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése===&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;layer = datasource.GetLayer()&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
===Attribútumok===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Népsűrűség ábrázolása térképen===&lt;br /&gt;
&lt;br /&gt;
Az alábbi kód, egy meglévő shapefile rétegre egy másikat generál, egy megadott atríbútum táblából, aminek segítségével szemlélteti, hogy az adott területeken mekkora a népsűrűség. Ehhez pontokat generál, egy pont 100 embert reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
import random&lt;br /&gt;
# shapefile megnyitasa ogr reteg letrehozasa elso feature lekerese&lt;br /&gt;
source = ogr.Open(&amp;quot;GIS_CensusTract_poly.shp&amp;quot;)&lt;br /&gt;
county = source.GetLayer(&amp;quot;GIS_CensusTract_poly&amp;quot;)&lt;br /&gt;
feature = county.GetNextFeature()&lt;br /&gt;
# kimeneti shapefile es reteg letrehozasa&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
output = driver.CreateDataSource(&amp;quot;PopDensity.shp&amp;quot;)&lt;br /&gt;
dots = output.CreateLayer(&amp;quot;PopDensity&amp;quot;, geom_type=ogr.wkbPoint)&lt;br /&gt;
while feature is not None:&lt;br /&gt;
  field_index = feature.GetFieldIndex(&amp;quot;POPULAT11&amp;quot;)&lt;br /&gt;
  population = int(feature.GetField(field_index))&lt;br /&gt;
  # 1 pont szaz embert reprezental &lt;br /&gt;
  density = population / 100&lt;br /&gt;
  count = 0   &lt;br /&gt;
  while count &amp;lt; density:&lt;br /&gt;
    geometry = feature.GetGeometryRef()&lt;br /&gt;
    minx, maxx, miny, maxy = geometry.GetEnvelope()&lt;br /&gt;
    x = random.uniform(minx,maxx)&lt;br /&gt;
    y = random.uniform(miny,maxy)&lt;br /&gt;
    f = ogr.Feature(feature_def=dots.GetLayerDefn())&lt;br /&gt;
    wkt = &amp;quot;POINT(%f %f)&amp;quot; % (x,y)&lt;br /&gt;
    point = ogr.CreateGeometryFromWkt(wkt)&lt;br /&gt;
    # Csak akkor hasznaljuk a pontot, ha benne van az adott alakzatban&lt;br /&gt;
    if feature.GetGeometryRef().Contains(point):&lt;br /&gt;
        f.SetGeometryDirectly(point)&lt;br /&gt;
        dots.CreateFeature(f)&lt;br /&gt;
        count += 1&lt;br /&gt;
    # objektum eltorlese&lt;br /&gt;
    f.Destroy()&lt;br /&gt;
  feature = county.GetNextFeature()&lt;br /&gt;
source.Destroy()&lt;br /&gt;
output.Destroy()  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hivatkozások ==&lt;br /&gt;
&lt;br /&gt;
http://www.gdal.org/&lt;br /&gt;
&lt;br /&gt;
https://pcjericks.github.io/py-gdalogr-cookbook/&lt;br /&gt;
&lt;br /&gt;
http://www.osgeo.org/gdal_ogr&lt;br /&gt;
&lt;br /&gt;
http://geoexamples.com/&lt;br /&gt;
&lt;br /&gt;
http://www.digital-geography.com/create-and-edit-shapefiles-with-python-only/&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=243</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=243"/>
		<updated>2016-06-19T18:18:54Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: /* Használat */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt &lt;br /&gt;
könyvtárakhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek a funkciók. A két könyvtár Python kötését a [http://www.swig.org/index.php SWIG] eszköz segítségével generálják. Az alkalmazásprogramozási felület (API) általában pontosan követi a GDAL és OGR könyvtárak C++  implementációiban használt osztályok és eljárások megnevezéseit. Az elérhető hivatalos dokumentáció (http://gdal.org/python) is automatikusan generált, a meglévő C/C++ függvények leírásai alapján. &lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
&lt;br /&gt;
A GDAL/OGR könyvtárak használatához a következőkre van szükség:&lt;br /&gt;
*    Python 2.X (Python 3.X a GDAL 1.7.0 verziójától kezdődően). Python 2-höz ajánlott 2.3 és 2.7 közötti verziót használni.&lt;br /&gt;
*    libgdal (1.5.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (gdal-devel)&lt;br /&gt;
*    numpy (1.0.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (numpy-devel)&lt;br /&gt;
A numpy telepítése nem feltétlenül szükséges, viszont sok példaprogram és eszköz használja, ezért ajánlott.&lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
=== GNU/Linux ===&lt;br /&gt;
A GDAL/OGR könyvtár és a Python kötések telepítését elvégezhetjük [https://docs.python.org/2/library/distutils.html distutils] vagy [https://pypi.python.org/pypi/setuptools setuptools] segítségével (az utóbbi használata ajánlott). Setuptools-t használva a telepítést a következő paranccsal végezhetjük el:&lt;br /&gt;
&lt;br /&gt;
 $ sudo easy_install GDAL&lt;br /&gt;
&lt;br /&gt;
Ha nem szeretnénk feltétlenül a legfrissebb verziót használni és megelégszünk az adott Linux disztribúció repozitóriumában fellelhető verzióval, akkor talán legegyszerűbb a csomagkezelőt használni a telepítésre. Ubuntu operációs rendszeren például a következő paranccsal telepíthető a GDAL/OGR könyvtárak Python kötése:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install gdal-bin python-gdal&lt;br /&gt;
&lt;br /&gt;
Ha [https://trac.osgeo.org/gdal/wiki/DownloadSource forrásból] szeretnénk lefordítani a legújabb verziót, akkor a Python kötéshez a &amp;lt;code&amp;gt;--with-python&amp;lt;/code&amp;gt; kapcsolót kell használni:&lt;br /&gt;
&lt;br /&gt;
 $ ./configure --with-python&lt;br /&gt;
&lt;br /&gt;
Ezután a szokásos módon a &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; eszköz elvégzi a fordítást és a telepítést:&lt;br /&gt;
&lt;br /&gt;
 $ make&lt;br /&gt;
 $ make install&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
A GDAL/OGR könyvtár Python kötésének telepítéséhez a következő lépésekre lesz szükség:&lt;br /&gt;
* [http://download.osgeo.org/gdal/win32/1.6/ GDAL Windows bináris fájlok] letöltése és kicsomagolása. Alapesetben csak a gdalwin32exe160.zip nevű fájlra lesz szükség. A könyvtárban fellelhető többi fájl bővítmények fejlesztéséhez szükséges. A zip fájlt bárhova ki lehet csomagolni, példa gyanánt a &amp;lt;code&amp;gt;C:\gdalwin32-1.6&amp;lt;/code&amp;gt; könyvtárat fogjuk használni. A kicsomagolás után a &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt; rendszerváltozót [http://www.computerhope.com/issues/ch000549.htm módosítani] kell, hozzá kell adni a &amp;lt;code&amp;gt;C:\gdalwin32-1.6\bin&amp;lt;/code&amp;gt; elérési útvonalat.&lt;br /&gt;
* Létre kell hozni a &amp;lt;code&amp;gt;GDAL_DATA&amp;lt;/code&amp;gt; nevű rendszerváltozót, aminek az értéke az adatokat tartalmazó könyvtár neve, jelen esetben &amp;lt;code&amp;gt;C:\gdalwin32-1.6\data&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Szükséges lehet az operációs rendszer újraindítása.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
A GDAL Python kötésében öt főmodult érhetünk el a következő módon:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import ogr&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import osr&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal_array&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdalconst&lt;br /&gt;
&lt;br /&gt;
=== Buktatók ===&lt;br /&gt;
&lt;br /&gt;
Annak ellenére, hogy a Python kötések használata teljesen elrejti a mögöttes C++ könyvtárat, használata pár apró dologban mégis eltér a megszokott Python modulok használatától, amire érdemes figyelnie a Python programozónak:&lt;br /&gt;
&lt;br /&gt;
==== A Python kötés nem használ kivételeket ====&lt;br /&gt;
&lt;br /&gt;
A Python kötés alapértelmezetten nem használja a kivételeket, ehelyett meghatározott hibaértéket térít vissza az adott függvény, és egy hibaüzenet jelenik meg a standard kimeneten. Például ha egy nemlétező fájlt próbálunk megnyitni, ez az alapértelmezett működés:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.Open(&amp;#039;/home/user/nincsilyen.img&amp;#039;)&lt;br /&gt;
 ERROR 4: `/home/user/nincsilyen.img&amp;#039; does not exist in the file system,&lt;br /&gt;
 and is not recognised as a supported dataset name.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ha mégis használni szeretnénk a kivételeket, akkor ezeket explicit módon engedélyezni kell az &amp;lt;code&amp;gt;UseExceptions()&amp;lt;/code&amp;gt; meghívásával. &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.UseExceptions()        # Kivetelek engedelyezese&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.Open(&amp;#039;/home/user/nincsilyen.img&amp;#039;)&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
 RuntimeError: `/home/user/nincsilyen.img&amp;#039; does not exist in the file system,&lt;br /&gt;
 and is not recognised as a supported dataset name.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez megkötés a visszamenőleges kompatibilitás miatt szükséges.  &lt;br /&gt;
&lt;br /&gt;
=== Fájlkezelés ===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az GDAL/OGR könyvtárak úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használnak. Például a következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen OGR driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
====Támogatott adatformátumok====&lt;br /&gt;
&lt;br /&gt;
A GDAL segítségével számos raszteres formátumot (állománytípust vagy egyéb adatforrást) tudunk kezelni. Az OGR könyvtár vektoros formátumú fájlokat kezel. A következőkben felsoroljuk a támogatott raszteres illetve vektoros állománytípusokat:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Raszteres adatformátumok (GDAL):&amp;#039;&amp;#039;&amp;#039; [http://www.gdal.org/frmt_various.html#AAIGrid Arc/Info ASCII Grid], [http://www.gdal.org/frmt_various.html#ACE2 ACE2], [http://www.gdal.org/frmt_various.html#ADRG ADRG/ARC Digitilized Raster Graphics (.gen/.thf)], [http://www.gdal.org/frmt_various.html#AIG Arc/Info Binary Grid (.adf)], [http://www.gdal.org/frmt_airsar.html AIRSAR Polarimetric], [http://www.gdal.org/frmt_various.html#ARG Azavea Raster Grid], [http://www.gdal.org/frmt_blx.html Magellan BLX Topo (.blx, .xlb)], [http://www.gdal.org/frmt_bag.html Bathymetry Attributed Grid (.bag)], [http://www.gdal.org/frmt_bmp.html Microsoft Windows Device Independent Bitmap (.bmp)], [http://www.gdal.org/frmt_various.html#BSB BSB Nautical Chart Format (.kap)], [http://www.gdal.org/frmt_various.html#BT VTP Binary Terrain Format (.bt)], [http://www.gdal.org/frmt_cals.html CALS Type I], [http://www.gdal.org/frmt_various.html#CEOS CEOS (Spot for instance)], [http://www.gdal.org/frmt_cosar.html TerraSAR-X Complex SAR Data Product], [http://www.gdal.org/frmt_various.html#CTG USGS LULC Composite Theme Grid], [http://www.gdal.org/frmt_various.html#DDS DirectDraw Surface], [http://www.gdal.org/frmt_various.html#DIMAP Spot DIMAP (metadata.dim)], [http://www.gdal.org/frmt_dods.html DODS / OPeNDAP], [http://www.gdal.org/frmt_various.html#DOQ1 First Generation USGS DOQ (.doq)], [http://www.gdal.org/frmt_various.html#DOQ2 New Labelled USGS DOQ (.doq)], [http://www.gdal.org/frmt_dted.html Military Elevation Data (.dt0, .dt1, .dt2)], [http://www.gdal.org/frmt_various.html#E00GRID Arc/Info Export E00 GRID], [http://www.gdal.org/frmt_various.html#ECRGTOC ECRG Table Of Contents (TOC.xml)], [http://www.gdal.org/frmt_ecw.html ERDAS Compressed Wavelets (.ecw)], [http://www.gdal.org/frmt_various.html#EHdr ESRI .hdr Labelled], [http://www.gdal.org/frmt_various.html#EIR Erdas Imagine Raw], [http://www.gdal.org/frmt_elas.html NASA ELAS], [http://www.gdal.org/frmt_various.html#ENVI ENVI .hdr Labelled Raster], [http://www.gdal.org/frmt_epsilon.html Epsilon - Wavelet compressed images], [http://www.gdal.org/frmt_ers.html ERMapper (.ers)], [http://www.gdal.org/frmt_various.html#Envisat Envisat Image Product (.n1)], [http://www.gdal.org/frmt_fast.html EOSAT FAST Format], [http://www.gdal.org/frmt_various.html#FITS FITS (.fits)], [http://www.gdal.org/frmt_various.html#GenBin Generic Binary (.hdr Labelled)], [http://www.gdal.org/frmt_georaster.html Oracle Spatial GeoRaster], [http://www.gdal.org/frmt_various.html#GFF GSat File Format], [http://www.gdal.org/frmt_gif.html Graphics Interchange Format (.gif)], [http://www.gdal.org/frmt_grib.html WMO GRIB1/GRIB2 (.grb)], [http://www.gdal.org/frmt_various.html#GMT GMT Compatible netCDF], [http://www.gdal.org/frmt_grass.html GRASS Raster Format], [http://www.gdal.org/frmt_various.html#GRASSASCIIGrid GRASS ASCII Grid], [http://www.gdal.org/frmt_various.html#GSAG Golden Software ASCII Grid], [http://www.gdal.org/frmt_various.html#GSBG Golden Software Binary Grid], [http://www.gdal.org/frmt_various.html#GS7BG Golden Software Surfer 7 Binary Grid], [http://www.gdal.org/frmt_gta.html Generic Tagged Arrays (.gta)], [http://www.gdal.org/frmt_gtiff.html TIFF / BigTIFF / GeoTIFF (.tif)], [http://www.gdal.org/frmt_various.html#GXF GXF - Grid eXchange File], [http://www.gdal.org/frmt_hdf4.html Hierarchical Data Format Release 4 (HDF4)], [http://www.gdal.org/frmt_hdf5.html Hierarchical Data Format Release 5 (HDF5)], [http://www.gdal.org/frmt_hf2.html HF2/HFZ heightfield raster], [http://www.gdal.org/frmt_hfa.html Erdas Imagine (.img)], [http://www.gdal.org/frmt_various.html#IDA Image Display and Analysis (WinDisp)], [http://www.gdal.org/frmt_various.html#ILWIS ILWIS Raster Map (.mpr,.mpl)], [http://www.gdal.org/frmt_intergraphraster.html Intergraph Raster], [http://www.gdal.org/frmt_various.html#IRIS IRIS], [http://www.gdal.org/frmt_various.html#ISCE ISCE raster], [http://www.gdal.org/frmt_isis2.html USGS Astrogeology ISIS cube (Version 2)], [http://www.gdal.org/frmt_isis3.html USGS Astrogeology ISIS cube (Version 3)], [http://www.gdal.org/frmt_palsar.html JAXA PALSAR Product Reader (Level 1.1/1.5)], [http://www.gdal.org/frmt_various.html#JDEM Japanese DEM (.mem)], [http://www.gdal.org/frmt_jpeg.html JPEG JFIF (.jpg)], [http://www.gdal.org/frmt_jpegls.html JPEG-LS], [http://www.gdal.org/frmt_jpeg2000.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2ecw.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2kak.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2mrsid.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2openjpeg.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jpipkak.html JPIP (based on Kakadu)], [http://www.gdal.org/frmt_kea.html KEA], [http://www.gdal.org/frmt_various.html#KRO KRO], [http://www.gdal.org/frmt_l1b.html NOAA Polar Orbiter Level 1b Data Set (AVHRR)], [http://www.gdal.org/frmt_various.html#LAN Erdas 7.x .LAN and .GIS], [http://www.gdal.org/frmt_lcp.html FARSITE v.4 LCP Format], [http://www.gdal.org/frmt_leveller.html Daylon Leveller Heightfield], [http://www.gdal.org/frmt_mbtiles.html MBTiles], [http://www.gdal.org/frmt_map.html OziExplorer .MAP], [http://www.gdal.org/frmt_mem.html In Memory Raster], [http://www.gdal.org/frmt_various.html#MFF Vexcel MFF], [http://www.gdal.org/frmt_mff2.html Vexcel MFF2], [http://www.gdal.org/frmt_mrsid_lidar.html MG4 Encoded Lidar], [http://www.gdal.org/frmt_marfa.html Meta Raster Format], [http://www.gdal.org/frmt_mrsid.html Multi-resolution Seamless Image Database], [http://www.gdal.org/frmt_msg.html Meteosat Second Generation], [http://www.gdal.org/frmt_msgn.html EUMETSAT Archive native (.nat)], [http://www.gdal.org/frmt_various.html#NDF NLAPS Data Format], [http://www.gdal.org/frmt_ngsgeoid.html NOAA NGS Geoid Height Grids], [http://www.gdal.org/frmt_nitf.html NITF (.ntf, .nsf, .gn?, .hr?, .ja?, .jg?, .jn?, .lf?, .on?, .tl?, .tp?, etc.)], [http://www.gdal.org/frmt_netcdf.html NetCDF], [http://www.gdal.org/frmt_ogdi.html OGDI Bridge], [http://www.gdal.org/frmt_ozi.html OZI OZF2/OZFX3], [http://www.gdal.org/frmt_various.html#PAux PCI .aux Labelled], [http://www.gdal.org/frmt_pcidsk.html PCI Geomatics Database File], [http://www.gdal.org/frmt_various.html#PCRaster PCRaster], [http://www.gdal.org/frmt_pdf.html Geospatial PDF], [http://www.gdal.org/frmt_pds.html NASA Planetary Data System], [http://www.gdal.org/frmt_plmosaic.html Planet Labs Mosaics API], [http://www.gdal.org/frmt_various.html#PNG Portable Network Graphics (.png)], [http://www.gdal.org/frmt_various.html#PNM Netpbm (.ppm,.pgm)], [http://www.gdal.org/frmt_r.html R Object Data Store], [http://www.gdal.org/frmt_rasdaman.html Rasdaman], [http://www.gdal.org/frmt_rasterlite.html Rasterlite - Rasters in SQLite DB], [http://www.gdal.org/frmt_rik.html Swedish Grid RIK (.rik)], [http://www.gdal.org/frmt_rmf.html Raster Matrix Format (*.rsw, .mtw)], [http://www.gdal.org/frmt_various.html#ROI_PAC ROI_PAC Raster], [http://www.gdal.org/frmt_various.html#RPFTOC Raster Product Format/RPF (CADRG, CIB)], [http://www.gdal.org/frmt_rs2.html RadarSat2 XML (product.xml)], [http://www.gdal.org/frmt_Idrisi.html Idrisi Raster], [http://www.gdal.org/frmt_safe.html Sentinel 1 SAR SAFE (manifest.safe)], [http://www.gdal.org/frmt_sentinel2.html Sentinel 2], [http://www.gdal.org/frmt_various.html#SAGA SAGA GIS Binary format], [http://www.gdal.org/frmt_various.html#SAR_CEOS SAR CEOS], [http://www.gdal.org/frmt_sde.html ArcSDE Raster], [http://www.gdal.org/frmt_various.html#SDTS USGS SDTS DEM (*CATD.DDF)], [http://www.gdal.org/frmt_various.html#SGI SGI Image Format], [http://www.gdal.org/frmt_various.html#SNODAS Snow Data Assimilation System], [http://www.gdal.org/frmt_various.html#SRP Standard Raster Product (ASRP/USRP)], [http://www.gdal.org/frmt_various.html#SRTMHGT SRTM HGT Format], [http://www.gdal.org/frmt_terragen.html Terragen Heightfield (.ter)], [http://www.gdal.org/frmt_usgsdem.html USGS ASCII DEM / CDED (.dem)], [http://www.gdal.org/frmt_wcs.html OGC Web Coverage Service], [http://www.gdal.org/frmt_webp.html WEBP], [http://www.gdal.org/frmt_wms.html OGC Web Map Service, and TMS, WorldWind, On Earth tiled, VirtualEarth, ArcGIS REST, IIP)], [http://www.gdal.org/frmt_wmts.html OGC Web Map Tile Service], [http://www.gdal.org/frmt_various.html#XPM X11 Pixmap (.xpm)], [http://www.gdal.org/frmt_xyz.html ASCII Gridded XYZ], [http://www.gdal.org/frmt_various.html#ZMap ZMap Plus Grid], [http://www.gdal.org/frmt_hfa.html here]&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Vektorgrafikus adatformátumok (OGR):&amp;#039;&amp;#039;&amp;#039; [http://www.gdal.org/drv_aeronavfaa.html Aeronav FAA files], [http://www.gdal.org/drv_amigocloud.html AmigoCloud API], [http://www.gdal.org/drv_ao.html ESRI ArcObjects], [http://www.gdal.org/drv_avcbin.html Arc/Info Binary Coverage], [http://www.gdal.org/drv_avce00.html Arc/Info .E00 (ASCII) Coverage], [http://www.gdal.org/drv_arcgen.html Arc/Info Generate], [http://www.gdal.org/drv_bna.html Atlas BNA], [http://www.gdal.org/drv_dwg.html AutoCAD DWG], [http://www.gdal.org/drv_dxf.html AutoCAD DXF], [http://www.gdal.org/drv_cartodb.html CartoDB], [http://www.gdal.org/drv_cloudant.html Cloudant / CouchDB], [http://www.gdal.org/drv_couchdb.html CouchDB / GeoCouch], [http://www.gdal.org/drv_csv.html Comma Separated Value (.csv)], [http://www.gdal.org/drv_csw.html OGC CSW (Catalog Service for the Web)], [http://www.gdal.org/drv_vfk.html Czech Cadastral Exchange Data Format], [http://www.gdal.org/drv_db2.html DB2 Spatial], [http://www.gdal.org/drv_dods.html DODS/OPeNDAP], [http://www.gdal.org/drv_edigeo.html EDIGEO], [http://www.gdal.org/drv_elasticsearch.html ElasticSearch], [http://www.gdal.org/drv_filegdb.html ESRI FileGDB], [http://www.gdal.org/drv_pgeo.html ESRI Personal GeoDatabase], [http://www.gdal.org/drv_sde.html ESRI ArcSDE], [http://www.gdal.org/drv_shapefile.html ESRI Shapefile / DBF], [http://www.gdal.org/drv_fme.html FMEObjects Gateway], [http://www.gdal.org/drv_geojson.html GeoJSON], [http://www.gdal.org/drv_geoconcept.html G&amp;amp;eacute;oconcept Export], [http://www.gdal.org/drv_geomedia.html Geomedia .mdb], [http://www.gdal.org/drv_geopackage.html GeoPackage], [http://www.gdal.org/drv_georss.html GeoRSS], [http://www.gdal.org/drv_gft.html Google Fusion Tables], [http://www.gdal.org/drv_gml.html GML], [http://www.gdal.org/drv_gmt.html GMT], [http://www.gdal.org/drv_gpsbabel.html GPSBabel], [http://www.gdal.org/drv_gpx.html GPX], [http://www.gdal.org/drv_grass.html GRASS Vector Format], [http://www.gdal.org/drv_gtm.html GPSTrackMaker (.gtm, .gtz)], [http://www.gdal.org/drv_htf.html Hydrographic Transfer Format], [http://www.gdal.org/drv_idrisi.html Idrisi Vector (.VCT)], [http://www.gdal.org/drv_idb.html Informix DataBlade], [http://www.gdal.org/drv_ili.html INTERLIS], [http://www.gdal.org/drv_ingres.html INGRES], [http://www.gdal.org/drv_jml.html JML], [http://www.gdal.org/drv_kml.html KML], [http://www.gdal.org/drv_libkml.html LIBKML], [http://www.gdal.org/drv_mitab.html Mapinfo File], [http://www.gdal.org/drv_dgn.html Microstation DGN], [http://www.gdal.org/drv_mdb.html Access MDB (PGeo and Geomedia capable)], [http://www.gdal.org/drv_memory.html Memory], [http://www.gdal.org/drv_mongodb.html MongoDB], [http://www.gdal.org/drv_mysql.html MySQL], [http://www.gdal.org/drv_nas.html NAS - ALKIS], [http://www.gdal.org/drv_oci.html Oracle Spatial], [http://www.gdal.org/drv_odbc.html ODBC], [http://www.gdal.org/drv_mssqlspatial.html MS SQL Spatial], [http://www.gdal.org/drv_ods.html Open Document Spreadsheet], [http://www.gdal.org/drv_ogdi.html OGDI Vectors (VPF, VMAP, DCW)], [http://www.gdal.org/drv_openair.html OpenAir], [http://www.gdal.org/drv_openfilegdb.html ESRI FileGDB], [http://www.gdal.org/drv_osm.html OpenStreetMap XML and PBF], [http://www.gdal.org/drv_pds.html PDS], [http://www.gdal.org/drv_plscenes.html Planet Labs Scenes API], [http://www.gdal.org/drv_pgdump.html PostgreSQL SQL dump], [http://www.gdal.org/drv_pg.html PostgreSQL/PostGIS], [http://www.gdal.org/drv_s57.html S-57 (ENC)], [http://www.gdal.org/drv_sdts.html SDTS], [http://www.gdal.org/drv_segukooa.html SEG-P1 / UKOOA P1/90], [http://www.gdal.org/drv_segy.html SEG-Y], [http://www.gdal.org/drv_selafin.html Selafin/Seraphin format], [http://www.gdal.org/drv_sqlite.html SQLite/SpatiaLite], [http://www.gdal.org/drv_sua.html SUA], [http://www.gdal.org/drv_svg.html SVG], [http://www.gdal.org/drv_sxf.html Storage and eXchange Format], [http://www.gdal.org/drv_ntf.html UK .NTF], [http://www.gdal.org/drv_tiger.html U.S. Census TIGER/Line], [http://www.gdal.org/drv_vrt.html VRT - Virtual Datasource], [http://www.gdal.org/drv_wfs.html OGC WFS (Web Feature Service)], [http://www.gdal.org/drv_xls.html MS Excel format], [http://www.gdal.org/drv_xlsx.html MS Office Open XML spreadsheet], [http://www.gdal.org/drv_xplane.html X-Plane/Flightgear aeronautical data], [http://www.gdal.org/drv_vdv.html VDV-451/VDV-452/IDF], [http://www.gdal.org/drv_walk.html Walk], [http://www.gdal.org/drv_wasp.html WAsP .map format].&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése===&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;layer = datasource.GetLayer()&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
===Attribútumok===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Népsűrűség ábrázolása térképen===&lt;br /&gt;
&lt;br /&gt;
Az alábbi kód, egy meglévő shapefile rétegre egy másikat generál, egy megadott atríbútum táblából, aminek segítségével szemlélteti, hogy az adott területeken mekkora a népsűrűség. Ehhez pontokat generál, egy pont 100 embert reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
import random&lt;br /&gt;
# shapefile megnyitasa ogr reteg letrehozasa elso feature lekerese&lt;br /&gt;
source = ogr.Open(&amp;quot;GIS_CensusTract_poly.shp&amp;quot;)&lt;br /&gt;
county = source.GetLayer(&amp;quot;GIS_CensusTract_poly&amp;quot;)&lt;br /&gt;
feature = county.GetNextFeature()&lt;br /&gt;
# kimeneti shapefile es reteg letrehozasa&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
output = driver.CreateDataSource(&amp;quot;PopDensity.shp&amp;quot;)&lt;br /&gt;
dots = output.CreateLayer(&amp;quot;PopDensity&amp;quot;, geom_type=ogr.wkbPoint)&lt;br /&gt;
while feature is not None:&lt;br /&gt;
  field_index = feature.GetFieldIndex(&amp;quot;POPULAT11&amp;quot;)&lt;br /&gt;
  population = int(feature.GetField(field_index))&lt;br /&gt;
  # 1 pont szaz embert reprezental &lt;br /&gt;
  density = population / 100&lt;br /&gt;
  count = 0   &lt;br /&gt;
  while count &amp;lt; density:&lt;br /&gt;
    geometry = feature.GetGeometryRef()&lt;br /&gt;
    minx, maxx, miny, maxy = geometry.GetEnvelope()&lt;br /&gt;
    x = random.uniform(minx,maxx)&lt;br /&gt;
    y = random.uniform(miny,maxy)&lt;br /&gt;
    f = ogr.Feature(feature_def=dots.GetLayerDefn())&lt;br /&gt;
    wkt = &amp;quot;POINT(%f %f)&amp;quot; % (x,y)&lt;br /&gt;
    point = ogr.CreateGeometryFromWkt(wkt)&lt;br /&gt;
    # Csak akkor hasznaljuk a pontot, ha benne van az adott alakzatban&lt;br /&gt;
    if feature.GetGeometryRef().Contains(point):&lt;br /&gt;
        f.SetGeometryDirectly(point)&lt;br /&gt;
        dots.CreateFeature(f)&lt;br /&gt;
        count += 1&lt;br /&gt;
    # objektum eltorlese&lt;br /&gt;
    f.Destroy()&lt;br /&gt;
  feature = county.GetNextFeature()&lt;br /&gt;
source.Destroy()&lt;br /&gt;
output.Destroy()  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hivatkozások ==&lt;br /&gt;
&lt;br /&gt;
http://www.gdal.org/&lt;br /&gt;
&lt;br /&gt;
https://pcjericks.github.io/py-gdalogr-cookbook/&lt;br /&gt;
&lt;br /&gt;
http://www.osgeo.org/gdal_ogr&lt;br /&gt;
&lt;br /&gt;
http://geoexamples.com/&lt;br /&gt;
&lt;br /&gt;
http://www.digital-geography.com/create-and-edit-shapefiles-with-python-only/&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=242</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=242"/>
		<updated>2016-06-19T18:11:15Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: /* Támogatott adatformátumok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt &lt;br /&gt;
könyvtárakhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek a funkciók. A két könyvtár Python kötését a [http://www.swig.org/index.php SWIG] eszköz segítségével generálják. Az alkalmazásprogramozási felület (API) általában pontosan követi a GDAL és OGR könyvtárak C++  implementációiban használt osztályok és eljárások megnevezéseit. Az elérhető hivatalos dokumentáció (http://gdal.org/python) is automatikusan generált, a meglévő C/C++ függvények leírásai alapján. &lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
&lt;br /&gt;
A GDAL/OGR könyvtárak használatához a következőkre van szükség:&lt;br /&gt;
*    Python 2.X (Python 3.X a GDAL 1.7.0 verziójától kezdődően). Python 2-höz ajánlott 2.3 és 2.7 közötti verziót használni.&lt;br /&gt;
*    libgdal (1.5.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (gdal-devel)&lt;br /&gt;
*    numpy (1.0.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (numpy-devel)&lt;br /&gt;
A numpy telepítése nem feltétlenül szükséges, viszont sok példaprogram és eszköz használja, ezért ajánlott.&lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
=== GNU/Linux ===&lt;br /&gt;
A GDAL/OGR könyvtár és a Python kötések telepítését elvégezhetjük [https://docs.python.org/2/library/distutils.html distutils] vagy [https://pypi.python.org/pypi/setuptools setuptools] segítségével (az utóbbi használata ajánlott). Setuptools-t használva a telepítést a következő paranccsal végezhetjük el:&lt;br /&gt;
&lt;br /&gt;
 $ sudo easy_install GDAL&lt;br /&gt;
&lt;br /&gt;
Ha nem szeretnénk feltétlenül a legfrissebb verziót használni és megelégszünk az adott Linux disztribúció repozitóriumában fellelhető verzióval, akkor talán legegyszerűbb a csomagkezelőt használni a telepítésre. Ubuntu operációs rendszeren például a következő paranccsal telepíthető a GDAL/OGR könyvtárak Python kötése:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install gdal-bin python-gdal&lt;br /&gt;
&lt;br /&gt;
Ha [https://trac.osgeo.org/gdal/wiki/DownloadSource forrásból] szeretnénk lefordítani a legújabb verziót, akkor a Python kötéshez a &amp;lt;code&amp;gt;--with-python&amp;lt;/code&amp;gt; kapcsolót kell használni:&lt;br /&gt;
&lt;br /&gt;
 $ ./configure --with-python&lt;br /&gt;
&lt;br /&gt;
Ezután a szokásos módon a &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; eszköz elvégzi a fordítást és a telepítést:&lt;br /&gt;
&lt;br /&gt;
 $ make&lt;br /&gt;
 $ make install&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
A GDAL/OGR könyvtár Python kötésének telepítéséhez a következő lépésekre lesz szükség:&lt;br /&gt;
* [http://download.osgeo.org/gdal/win32/1.6/ GDAL Windows bináris fájlok] letöltése és kicsomagolása. Alapesetben csak a gdalwin32exe160.zip nevű fájlra lesz szükség. A könyvtárban fellelhető többi fájl bővítmények fejlesztéséhez szükséges. A zip fájlt bárhova ki lehet csomagolni, példa gyanánt a &amp;lt;code&amp;gt;C:\gdalwin32-1.6&amp;lt;/code&amp;gt; könyvtárat fogjuk használni. A kicsomagolás után a &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt; rendszerváltozót [http://www.computerhope.com/issues/ch000549.htm módosítani] kell, hozzá kell adni a &amp;lt;code&amp;gt;C:\gdalwin32-1.6\bin&amp;lt;/code&amp;gt; elérési útvonalat.&lt;br /&gt;
* Létre kell hozni a &amp;lt;code&amp;gt;GDAL_DATA&amp;lt;/code&amp;gt; nevű rendszerváltozót, aminek az értéke az adatokat tartalmazó könyvtár neve, jelen esetben &amp;lt;code&amp;gt;C:\gdalwin32-1.6\data&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Szükséges lehet az operációs rendszer újraindítása.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
A GDAL Python kötésében öt főmodult érhetünk el a következő módon:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import ogr&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import osr&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal_array&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdalconst&lt;br /&gt;
&lt;br /&gt;
=== Buktatók ===&lt;br /&gt;
&lt;br /&gt;
Annak ellenére, hogy a Python kötések használata teljesen elrejti a mögöttes C++ könyvtárat, használata pár apró dologban mégis eltér a megszokott Python modulok használatától, amire érdemes figyelnie a Python programozónak:&lt;br /&gt;
&lt;br /&gt;
==== A Python kötés nem használ kivételeket ====&lt;br /&gt;
&lt;br /&gt;
A Python kötés alapértelmezetten nem használja a kivételeket, ehelyett meghatározott hibaértéket térít vissza az adott függvény, és egy hibaüzenet jelenik meg a standard kimeneten. Például ha egy nemlétező fájlt próbálunk megnyitni, ez az alapértelmezett működés:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.Open(&amp;#039;/home/user/nincsilyen.img&amp;#039;)&lt;br /&gt;
 ERROR 4: `/home/user/nincsilyen.img&amp;#039; does not exist in the file system,&lt;br /&gt;
 and is not recognised as a supported dataset name.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ha mégis használni szeretnénk a kivételeket, akkor ezeket explicit módon engedélyezni kell az &amp;lt;code&amp;gt;UseExceptions()&amp;lt;/code&amp;gt; meghívásával. &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.UseExceptions()        # Kivetelek engedelyezese&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.Open(&amp;#039;/home/user/nincsilyen.img&amp;#039;)&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
 RuntimeError: `/home/user/nincsilyen.img&amp;#039; does not exist in the file system,&lt;br /&gt;
 and is not recognised as a supported dataset name.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez megkötés a visszamenőleges kompatibilitás miatt szükséges.  &lt;br /&gt;
&lt;br /&gt;
===Támogatott adatformátumok===&lt;br /&gt;
&lt;br /&gt;
A GDAL segítségével számos raszteres formátumot (állománytípust vagy egyéb adatforrást) tudunk kezelni. Az OGR könyvtár vektoros formátumú fájlokat kezel. A következőkben felsoroljuk a támogatott raszteres illetve vektoros állománytípusokat:&lt;br /&gt;
&lt;br /&gt;
==== Raszteres adatformátumok (GDAL) ====&lt;br /&gt;
[http://www.gdal.org/frmt_various.html#AAIGrid Arc/Info ASCII Grid], [http://www.gdal.org/frmt_various.html#ACE2 ACE2], [http://www.gdal.org/frmt_various.html#ADRG ADRG/ARC Digitilized Raster Graphics (.gen/.thf)], [http://www.gdal.org/frmt_various.html#AIG Arc/Info Binary Grid (.adf)], [http://www.gdal.org/frmt_airsar.html AIRSAR Polarimetric], [http://www.gdal.org/frmt_various.html#ARG Azavea Raster Grid], [http://www.gdal.org/frmt_blx.html Magellan BLX Topo (.blx, .xlb)], [http://www.gdal.org/frmt_bag.html Bathymetry Attributed Grid (.bag)], [http://www.gdal.org/frmt_bmp.html Microsoft Windows Device Independent Bitmap (.bmp)], [http://www.gdal.org/frmt_various.html#BSB BSB Nautical Chart Format (.kap)], [http://www.gdal.org/frmt_various.html#BT VTP Binary Terrain Format (.bt)], [http://www.gdal.org/frmt_cals.html CALS Type I], [http://www.gdal.org/frmt_various.html#CEOS CEOS (Spot for instance)], [http://www.gdal.org/frmt_cosar.html TerraSAR-X Complex SAR Data Product], [http://www.gdal.org/frmt_various.html#CTG USGS LULC Composite Theme Grid], [http://www.gdal.org/frmt_various.html#DDS DirectDraw Surface], [http://www.gdal.org/frmt_various.html#DIMAP Spot DIMAP (metadata.dim)], [http://www.gdal.org/frmt_dods.html DODS / OPeNDAP], [http://www.gdal.org/frmt_various.html#DOQ1 First Generation USGS DOQ (.doq)], [http://www.gdal.org/frmt_various.html#DOQ2 New Labelled USGS DOQ (.doq)], [http://www.gdal.org/frmt_dted.html Military Elevation Data (.dt0, .dt1, .dt2)], [http://www.gdal.org/frmt_various.html#E00GRID Arc/Info Export E00 GRID], [http://www.gdal.org/frmt_various.html#ECRGTOC ECRG Table Of Contents (TOC.xml)], [http://www.gdal.org/frmt_ecw.html ERDAS Compressed Wavelets (.ecw)], [http://www.gdal.org/frmt_various.html#EHdr ESRI .hdr Labelled], [http://www.gdal.org/frmt_various.html#EIR Erdas Imagine Raw], [http://www.gdal.org/frmt_elas.html NASA ELAS], [http://www.gdal.org/frmt_various.html#ENVI ENVI .hdr Labelled Raster], [http://www.gdal.org/frmt_epsilon.html Epsilon - Wavelet compressed images], [http://www.gdal.org/frmt_ers.html ERMapper (.ers)], [http://www.gdal.org/frmt_various.html#Envisat Envisat Image Product (.n1)], [http://www.gdal.org/frmt_fast.html EOSAT FAST Format], [http://www.gdal.org/frmt_various.html#FITS FITS (.fits)], [http://www.gdal.org/frmt_various.html#GenBin Generic Binary (.hdr Labelled)], [http://www.gdal.org/frmt_georaster.html Oracle Spatial GeoRaster], [http://www.gdal.org/frmt_various.html#GFF GSat File Format], [http://www.gdal.org/frmt_gif.html Graphics Interchange Format (.gif)], [http://www.gdal.org/frmt_grib.html WMO GRIB1/GRIB2 (.grb)], [http://www.gdal.org/frmt_various.html#GMT GMT Compatible netCDF], [http://www.gdal.org/frmt_grass.html GRASS Raster Format], [http://www.gdal.org/frmt_various.html#GRASSASCIIGrid GRASS ASCII Grid], [http://www.gdal.org/frmt_various.html#GSAG Golden Software ASCII Grid], [http://www.gdal.org/frmt_various.html#GSBG Golden Software Binary Grid], [http://www.gdal.org/frmt_various.html#GS7BG Golden Software Surfer 7 Binary Grid], [http://www.gdal.org/frmt_gta.html Generic Tagged Arrays (.gta)], [http://www.gdal.org/frmt_gtiff.html TIFF / BigTIFF / GeoTIFF (.tif)], [http://www.gdal.org/frmt_various.html#GXF GXF - Grid eXchange File], [http://www.gdal.org/frmt_hdf4.html Hierarchical Data Format Release 4 (HDF4)], [http://www.gdal.org/frmt_hdf5.html Hierarchical Data Format Release 5 (HDF5)], [http://www.gdal.org/frmt_hf2.html HF2/HFZ heightfield raster], [http://www.gdal.org/frmt_hfa.html Erdas Imagine (.img)], [http://www.gdal.org/frmt_various.html#IDA Image Display and Analysis (WinDisp)], [http://www.gdal.org/frmt_various.html#ILWIS ILWIS Raster Map (.mpr,.mpl)], [http://www.gdal.org/frmt_intergraphraster.html Intergraph Raster], [http://www.gdal.org/frmt_various.html#IRIS IRIS], [http://www.gdal.org/frmt_various.html#ISCE ISCE raster], [http://www.gdal.org/frmt_isis2.html USGS Astrogeology ISIS cube (Version 2)], [http://www.gdal.org/frmt_isis3.html USGS Astrogeology ISIS cube (Version 3)], [http://www.gdal.org/frmt_palsar.html JAXA PALSAR Product Reader (Level 1.1/1.5)], [http://www.gdal.org/frmt_various.html#JDEM Japanese DEM (.mem)], [http://www.gdal.org/frmt_jpeg.html JPEG JFIF (.jpg)], [http://www.gdal.org/frmt_jpegls.html JPEG-LS], [http://www.gdal.org/frmt_jpeg2000.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2ecw.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2kak.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2mrsid.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jp2openjpeg.html JPEG2000 (.jp2, .j2k)], [http://www.gdal.org/frmt_jpipkak.html JPIP (based on Kakadu)], [http://www.gdal.org/frmt_kea.html KEA], [http://www.gdal.org/frmt_various.html#KRO KRO], [http://www.gdal.org/frmt_l1b.html NOAA Polar Orbiter Level 1b Data Set (AVHRR)], [http://www.gdal.org/frmt_various.html#LAN Erdas 7.x .LAN and .GIS], [http://www.gdal.org/frmt_lcp.html FARSITE v.4 LCP Format], [http://www.gdal.org/frmt_leveller.html Daylon Leveller Heightfield], [http://www.gdal.org/frmt_mbtiles.html MBTiles], [http://www.gdal.org/frmt_map.html OziExplorer .MAP], [http://www.gdal.org/frmt_mem.html In Memory Raster], [http://www.gdal.org/frmt_various.html#MFF Vexcel MFF], [http://www.gdal.org/frmt_mff2.html Vexcel MFF2], [http://www.gdal.org/frmt_mrsid_lidar.html MG4 Encoded Lidar], [http://www.gdal.org/frmt_marfa.html Meta Raster Format], [http://www.gdal.org/frmt_mrsid.html Multi-resolution Seamless Image Database], [http://www.gdal.org/frmt_msg.html Meteosat Second Generation], [http://www.gdal.org/frmt_msgn.html EUMETSAT Archive native (.nat)], [http://www.gdal.org/frmt_various.html#NDF NLAPS Data Format], [http://www.gdal.org/frmt_ngsgeoid.html NOAA NGS Geoid Height Grids], [http://www.gdal.org/frmt_nitf.html NITF (.ntf, .nsf, .gn?, .hr?, .ja?, .jg?, .jn?, .lf?, .on?, .tl?, .tp?, etc.)], [http://www.gdal.org/frmt_netcdf.html NetCDF], [http://www.gdal.org/frmt_ogdi.html OGDI Bridge], [http://www.gdal.org/frmt_ozi.html OZI OZF2/OZFX3], [http://www.gdal.org/frmt_various.html#PAux PCI .aux Labelled], [http://www.gdal.org/frmt_pcidsk.html PCI Geomatics Database File], [http://www.gdal.org/frmt_various.html#PCRaster PCRaster], [http://www.gdal.org/frmt_pdf.html Geospatial PDF], [http://www.gdal.org/frmt_pds.html NASA Planetary Data System], [http://www.gdal.org/frmt_plmosaic.html Planet Labs Mosaics API], [http://www.gdal.org/frmt_various.html#PNG Portable Network Graphics (.png)], [http://www.gdal.org/frmt_various.html#PNM Netpbm (.ppm,.pgm)], [http://www.gdal.org/frmt_r.html R Object Data Store], [http://www.gdal.org/frmt_rasdaman.html Rasdaman], [http://www.gdal.org/frmt_rasterlite.html Rasterlite - Rasters in SQLite DB], [http://www.gdal.org/frmt_rik.html Swedish Grid RIK (.rik)], [http://www.gdal.org/frmt_rmf.html Raster Matrix Format (*.rsw, .mtw)], [http://www.gdal.org/frmt_various.html#ROI_PAC ROI_PAC Raster], [http://www.gdal.org/frmt_various.html#RPFTOC Raster Product Format/RPF (CADRG, CIB)], [http://www.gdal.org/frmt_rs2.html RadarSat2 XML (product.xml)], [http://www.gdal.org/frmt_Idrisi.html Idrisi Raster], [http://www.gdal.org/frmt_safe.html Sentinel 1 SAR SAFE (manifest.safe)], [http://www.gdal.org/frmt_sentinel2.html Sentinel 2], [http://www.gdal.org/frmt_various.html#SAGA SAGA GIS Binary format], [http://www.gdal.org/frmt_various.html#SAR_CEOS SAR CEOS], [http://www.gdal.org/frmt_sde.html ArcSDE Raster], [http://www.gdal.org/frmt_various.html#SDTS USGS SDTS DEM (*CATD.DDF)], [http://www.gdal.org/frmt_various.html#SGI SGI Image Format], [http://www.gdal.org/frmt_various.html#SNODAS Snow Data Assimilation System], [http://www.gdal.org/frmt_various.html#SRP Standard Raster Product (ASRP/USRP)], [http://www.gdal.org/frmt_various.html#SRTMHGT SRTM HGT Format], [http://www.gdal.org/frmt_terragen.html Terragen Heightfield (.ter)], [http://www.gdal.org/frmt_usgsdem.html USGS ASCII DEM / CDED (.dem)], [http://www.gdal.org/frmt_wcs.html OGC Web Coverage Service], [http://www.gdal.org/frmt_webp.html WEBP], [http://www.gdal.org/frmt_wms.html OGC Web Map Service, and TMS, WorldWind, On Earth tiled, VirtualEarth, ArcGIS REST, IIP)], [http://www.gdal.org/frmt_wmts.html OGC Web Map Tile Service], [http://www.gdal.org/frmt_various.html#XPM X11 Pixmap (.xpm)], [http://www.gdal.org/frmt_xyz.html ASCII Gridded XYZ], [http://www.gdal.org/frmt_various.html#ZMap ZMap Plus Grid], [http://www.gdal.org/frmt_hfa.html here]&lt;br /&gt;
&lt;br /&gt;
==== Vektorgrafikus adatformátumok (OGR) ====&lt;br /&gt;
&lt;br /&gt;
[http://www.gdal.org/drv_aeronavfaa.html Aeronav FAA files], [http://www.gdal.org/drv_amigocloud.html AmigoCloud API], [http://www.gdal.org/drv_ao.html ESRI ArcObjects], [http://www.gdal.org/drv_avcbin.html Arc/Info Binary Coverage], [http://www.gdal.org/drv_avce00.html Arc/Info .E00 (ASCII) Coverage], [http://www.gdal.org/drv_arcgen.html Arc/Info Generate], [http://www.gdal.org/drv_bna.html Atlas BNA], [http://www.gdal.org/drv_dwg.html AutoCAD DWG], [http://www.gdal.org/drv_dxf.html AutoCAD DXF], [http://www.gdal.org/drv_cartodb.html CartoDB], [http://www.gdal.org/drv_cloudant.html Cloudant / CouchDB], [http://www.gdal.org/drv_couchdb.html CouchDB / GeoCouch], [http://www.gdal.org/drv_csv.html Comma Separated Value (.csv)], [http://www.gdal.org/drv_csw.html OGC CSW (Catalog Service for the Web)], [http://www.gdal.org/drv_vfk.html Czech Cadastral Exchange Data Format], [http://www.gdal.org/drv_db2.html DB2 Spatial], [http://www.gdal.org/drv_dods.html DODS/OPeNDAP], [http://www.gdal.org/drv_edigeo.html EDIGEO], [http://www.gdal.org/drv_elasticsearch.html ElasticSearch], [http://www.gdal.org/drv_filegdb.html ESRI FileGDB], [http://www.gdal.org/drv_pgeo.html ESRI Personal GeoDatabase], [http://www.gdal.org/drv_sde.html ESRI ArcSDE], [http://www.gdal.org/drv_shapefile.html ESRI Shapefile / DBF], [http://www.gdal.org/drv_fme.html FMEObjects Gateway], [http://www.gdal.org/drv_geojson.html GeoJSON], [http://www.gdal.org/drv_geoconcept.html G&amp;amp;eacute;oconcept Export], [http://www.gdal.org/drv_geomedia.html Geomedia .mdb], [http://www.gdal.org/drv_geopackage.html GeoPackage], [http://www.gdal.org/drv_georss.html GeoRSS], [http://www.gdal.org/drv_gft.html Google Fusion Tables], [http://www.gdal.org/drv_gml.html GML], [http://www.gdal.org/drv_gmt.html GMT], [http://www.gdal.org/drv_gpsbabel.html GPSBabel], [http://www.gdal.org/drv_gpx.html GPX], [http://www.gdal.org/drv_grass.html GRASS Vector Format], [http://www.gdal.org/drv_gtm.html GPSTrackMaker (.gtm, .gtz)], [http://www.gdal.org/drv_htf.html Hydrographic Transfer Format], [http://www.gdal.org/drv_idrisi.html Idrisi Vector (.VCT)], [http://www.gdal.org/drv_idb.html Informix DataBlade], [http://www.gdal.org/drv_ili.html INTERLIS], [http://www.gdal.org/drv_ingres.html INGRES], [http://www.gdal.org/drv_jml.html JML], [http://www.gdal.org/drv_kml.html KML], [http://www.gdal.org/drv_libkml.html LIBKML], [http://www.gdal.org/drv_mitab.html Mapinfo File], [http://www.gdal.org/drv_dgn.html Microstation DGN], [http://www.gdal.org/drv_mdb.html Access MDB (PGeo and Geomedia capable)], [http://www.gdal.org/drv_memory.html Memory], [http://www.gdal.org/drv_mongodb.html MongoDB], [http://www.gdal.org/drv_mysql.html MySQL], [http://www.gdal.org/drv_nas.html NAS - ALKIS], [http://www.gdal.org/drv_oci.html Oracle Spatial], [http://www.gdal.org/drv_odbc.html ODBC], [http://www.gdal.org/drv_mssqlspatial.html MS SQL Spatial], [http://www.gdal.org/drv_ods.html Open Document Spreadsheet], [http://www.gdal.org/drv_ogdi.html OGDI Vectors (VPF, VMAP, DCW)], [http://www.gdal.org/drv_openair.html OpenAir], [http://www.gdal.org/drv_openfilegdb.html ESRI FileGDB], [http://www.gdal.org/drv_osm.html OpenStreetMap XML and PBF], [http://www.gdal.org/drv_pds.html PDS], [http://www.gdal.org/drv_plscenes.html Planet Labs Scenes API], [http://www.gdal.org/drv_pgdump.html PostgreSQL SQL dump], [http://www.gdal.org/drv_pg.html PostgreSQL/PostGIS], [http://www.gdal.org/drv_s57.html S-57 (ENC)], [http://www.gdal.org/drv_sdts.html SDTS], [http://www.gdal.org/drv_segukooa.html SEG-P1 / UKOOA P1/90], [http://www.gdal.org/drv_segy.html SEG-Y], [http://www.gdal.org/drv_selafin.html Selafin/Seraphin format], [http://www.gdal.org/drv_sqlite.html SQLite/SpatiaLite], [http://www.gdal.org/drv_sua.html SUA], [http://www.gdal.org/drv_svg.html SVG], [http://www.gdal.org/drv_sxf.html Storage and eXchange Format], [http://www.gdal.org/drv_ntf.html UK .NTF], [http://www.gdal.org/drv_tiger.html U.S. Census TIGER/Line], [http://www.gdal.org/drv_vrt.html VRT - Virtual Datasource], [http://www.gdal.org/drv_wfs.html OGC WFS (Web Feature Service)], [http://www.gdal.org/drv_xls.html MS Excel format], [http://www.gdal.org/drv_xlsx.html MS Office Open XML spreadsheet], [http://www.gdal.org/drv_xplane.html X-Plane/Flightgear aeronautical data], [http://www.gdal.org/drv_vdv.html VDV-451/VDV-452/IDF], [http://www.gdal.org/drv_walk.html Walk], [http://www.gdal.org/drv_wasp.html WAsP .map format].&lt;br /&gt;
&lt;br /&gt;
===Hozzáférés a filehoz===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az OGR könyvtár úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használ. A következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése===&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;layer = datasource.GetLayer()&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
===Attribútumok===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Népsűrűség ábrázolása térképen===&lt;br /&gt;
&lt;br /&gt;
Az alábbi kód, egy meglévő shapefile rétegre egy másikat generál, egy megadott atríbútum táblából, aminek segítségével szemlélteti, hogy az adott területeken mekkora a népsűrűség. Ehhez pontokat generál, egy pont 100 embert reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
import random&lt;br /&gt;
# shapefile megnyitasa ogr reteg letrehozasa elso feature lekerese&lt;br /&gt;
source = ogr.Open(&amp;quot;GIS_CensusTract_poly.shp&amp;quot;)&lt;br /&gt;
county = source.GetLayer(&amp;quot;GIS_CensusTract_poly&amp;quot;)&lt;br /&gt;
feature = county.GetNextFeature()&lt;br /&gt;
# kimeneti shapefile es reteg letrehozasa&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
output = driver.CreateDataSource(&amp;quot;PopDensity.shp&amp;quot;)&lt;br /&gt;
dots = output.CreateLayer(&amp;quot;PopDensity&amp;quot;, geom_type=ogr.wkbPoint)&lt;br /&gt;
while feature is not None:&lt;br /&gt;
  field_index = feature.GetFieldIndex(&amp;quot;POPULAT11&amp;quot;)&lt;br /&gt;
  population = int(feature.GetField(field_index))&lt;br /&gt;
  # 1 pont szaz embert reprezental &lt;br /&gt;
  density = population / 100&lt;br /&gt;
  count = 0   &lt;br /&gt;
  while count &amp;lt; density:&lt;br /&gt;
    geometry = feature.GetGeometryRef()&lt;br /&gt;
    minx, maxx, miny, maxy = geometry.GetEnvelope()&lt;br /&gt;
    x = random.uniform(minx,maxx)&lt;br /&gt;
    y = random.uniform(miny,maxy)&lt;br /&gt;
    f = ogr.Feature(feature_def=dots.GetLayerDefn())&lt;br /&gt;
    wkt = &amp;quot;POINT(%f %f)&amp;quot; % (x,y)&lt;br /&gt;
    point = ogr.CreateGeometryFromWkt(wkt)&lt;br /&gt;
    # Csak akkor hasznaljuk a pontot, ha benne van az adott alakzatban&lt;br /&gt;
    if feature.GetGeometryRef().Contains(point):&lt;br /&gt;
        f.SetGeometryDirectly(point)&lt;br /&gt;
        dots.CreateFeature(f)&lt;br /&gt;
        count += 1&lt;br /&gt;
    # objektum eltorlese&lt;br /&gt;
    f.Destroy()&lt;br /&gt;
  feature = county.GetNextFeature()&lt;br /&gt;
source.Destroy()&lt;br /&gt;
output.Destroy()  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hivatkozások ==&lt;br /&gt;
&lt;br /&gt;
http://www.gdal.org/&lt;br /&gt;
&lt;br /&gt;
https://pcjericks.github.io/py-gdalogr-cookbook/&lt;br /&gt;
&lt;br /&gt;
http://www.osgeo.org/gdal_ogr&lt;br /&gt;
&lt;br /&gt;
http://geoexamples.com/&lt;br /&gt;
&lt;br /&gt;
http://www.digital-geography.com/create-and-edit-shapefiles-with-python-only/&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=241</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=241"/>
		<updated>2016-06-19T17:58:28Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: /* Támogatott adatformátumok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt &lt;br /&gt;
könyvtárakhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek a funkciók. A két könyvtár Python kötését a [http://www.swig.org/index.php SWIG] eszköz segítségével generálják. Az alkalmazásprogramozási felület (API) általában pontosan követi a GDAL és OGR könyvtárak C++  implementációiban használt osztályok és eljárások megnevezéseit. Az elérhető hivatalos dokumentáció (http://gdal.org/python) is automatikusan generált, a meglévő C/C++ függvények leírásai alapján. &lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
&lt;br /&gt;
A GDAL/OGR könyvtárak használatához a következőkre van szükség:&lt;br /&gt;
*    Python 2.X (Python 3.X a GDAL 1.7.0 verziójától kezdődően). Python 2-höz ajánlott 2.3 és 2.7 közötti verziót használni.&lt;br /&gt;
*    libgdal (1.5.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (gdal-devel)&lt;br /&gt;
*    numpy (1.0.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (numpy-devel)&lt;br /&gt;
A numpy telepítése nem feltétlenül szükséges, viszont sok példaprogram és eszköz használja, ezért ajánlott.&lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
=== GNU/Linux ===&lt;br /&gt;
A GDAL/OGR könyvtár és a Python kötések telepítését elvégezhetjük [https://docs.python.org/2/library/distutils.html distutils] vagy [https://pypi.python.org/pypi/setuptools setuptools] segítségével (az utóbbi használata ajánlott). Setuptools-t használva a telepítést a következő paranccsal végezhetjük el:&lt;br /&gt;
&lt;br /&gt;
 $ sudo easy_install GDAL&lt;br /&gt;
&lt;br /&gt;
Ha nem szeretnénk feltétlenül a legfrissebb verziót használni és megelégszünk az adott Linux disztribúció repozitóriumában fellelhető verzióval, akkor talán legegyszerűbb a csomagkezelőt használni a telepítésre. Ubuntu operációs rendszeren például a következő paranccsal telepíthető a GDAL/OGR könyvtárak Python kötése:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install gdal-bin python-gdal&lt;br /&gt;
&lt;br /&gt;
Ha [https://trac.osgeo.org/gdal/wiki/DownloadSource forrásból] szeretnénk lefordítani a legújabb verziót, akkor a Python kötéshez a &amp;lt;code&amp;gt;--with-python&amp;lt;/code&amp;gt; kapcsolót kell használni:&lt;br /&gt;
&lt;br /&gt;
 $ ./configure --with-python&lt;br /&gt;
&lt;br /&gt;
Ezután a szokásos módon a &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; eszköz elvégzi a fordítást és a telepítést:&lt;br /&gt;
&lt;br /&gt;
 $ make&lt;br /&gt;
 $ make install&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
A GDAL/OGR könyvtár Python kötésének telepítéséhez a következő lépésekre lesz szükség:&lt;br /&gt;
* [http://download.osgeo.org/gdal/win32/1.6/ GDAL Windows bináris fájlok] letöltése és kicsomagolása. Alapesetben csak a gdalwin32exe160.zip nevű fájlra lesz szükség. A könyvtárban fellelhető többi fájl bővítmények fejlesztéséhez szükséges. A zip fájlt bárhova ki lehet csomagolni, példa gyanánt a &amp;lt;code&amp;gt;C:\gdalwin32-1.6&amp;lt;/code&amp;gt; könyvtárat fogjuk használni. A kicsomagolás után a &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt; rendszerváltozót [http://www.computerhope.com/issues/ch000549.htm módosítani] kell, hozzá kell adni a &amp;lt;code&amp;gt;C:\gdalwin32-1.6\bin&amp;lt;/code&amp;gt; elérési útvonalat.&lt;br /&gt;
* Létre kell hozni a &amp;lt;code&amp;gt;GDAL_DATA&amp;lt;/code&amp;gt; nevű rendszerváltozót, aminek az értéke az adatokat tartalmazó könyvtár neve, jelen esetben &amp;lt;code&amp;gt;C:\gdalwin32-1.6\data&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Szükséges lehet az operációs rendszer újraindítása.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
A GDAL Python kötésében öt főmodult érhetünk el a következő módon:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import ogr&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import osr&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal_array&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdalconst&lt;br /&gt;
&lt;br /&gt;
=== Buktatók ===&lt;br /&gt;
&lt;br /&gt;
Annak ellenére, hogy a Python kötések használata teljesen elrejti a mögöttes C++ könyvtárat, használata pár apró dologban mégis eltér a megszokott Python modulok használatától, amire érdemes figyelnie a Python programozónak:&lt;br /&gt;
&lt;br /&gt;
==== A Python kötés nem használ kivételeket ====&lt;br /&gt;
&lt;br /&gt;
A Python kötés alapértelmezetten nem használja a kivételeket, ehelyett meghatározott hibaértéket térít vissza az adott függvény, és egy hibaüzenet jelenik meg a standard kimeneten. Például ha egy nemlétező fájlt próbálunk megnyitni, ez az alapértelmezett működés:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.Open(&amp;#039;/home/user/nincsilyen.img&amp;#039;)&lt;br /&gt;
 ERROR 4: `/home/user/nincsilyen.img&amp;#039; does not exist in the file system,&lt;br /&gt;
 and is not recognised as a supported dataset name.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ha mégis használni szeretnénk a kivételeket, akkor ezeket explicit módon engedélyezni kell az &amp;lt;code&amp;gt;UseExceptions()&amp;lt;/code&amp;gt; meghívásával. &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.UseExceptions()        # Kivetelek engedelyezese&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.Open(&amp;#039;/home/user/nincsilyen.img&amp;#039;)&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
 RuntimeError: `/home/user/nincsilyen.img&amp;#039; does not exist in the file system,&lt;br /&gt;
 and is not recognised as a supported dataset name.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez megkötés a visszamenőleges kompatibilitás miatt szükséges.  &lt;br /&gt;
&lt;br /&gt;
===Támogatott adatformátumok===&lt;br /&gt;
&lt;br /&gt;
Az OGR könyvtár segítségével számos vektoros formátumot (állománytípust vagy egyéb adatforrást) tudunk kezelni: [http://www.gdal.org/drv_aeronavfaa.html Aeronav FAA files], [http://www.gdal.org/drv_amigocloud.html AmigoCloud API], [http://www.gdal.org/drv_ao.html ESRI ArcObjects], [http://www.gdal.org/drv_avcbin.html Arc/Info Binary Coverage], [http://www.gdal.org/drv_avce00.html Arc/Info .E00 (ASCII) Coverage], [http://www.gdal.org/drv_arcgen.html Arc/Info Generate], [http://www.gdal.org/drv_bna.html Atlas BNA], [http://www.gdal.org/drv_dwg.html AutoCAD DWG], [http://www.gdal.org/drv_dxf.html AutoCAD DXF], [http://www.gdal.org/drv_cartodb.html CartoDB], [http://www.gdal.org/drv_cloudant.html Cloudant / CouchDB], [http://www.gdal.org/drv_couchdb.html CouchDB / GeoCouch], [http://www.gdal.org/drv_csv.html Comma Separated Value (.csv)], [http://www.gdal.org/drv_csw.html OGC CSW (Catalog Service for the Web)], [http://www.gdal.org/drv_vfk.html Czech Cadastral Exchange Data Format], [http://www.gdal.org/drv_db2.html DB2 Spatial], [http://www.gdal.org/drv_dods.html DODS/OPeNDAP], [http://www.gdal.org/drv_edigeo.html EDIGEO], [http://www.gdal.org/drv_elasticsearch.html ElasticSearch], [http://www.gdal.org/drv_filegdb.html ESRI FileGDB], [http://www.gdal.org/drv_pgeo.html ESRI Personal GeoDatabase], [http://www.gdal.org/drv_sde.html ESRI ArcSDE], [http://www.gdal.org/drv_shapefile.html ESRI Shapefile / DBF], [http://www.gdal.org/drv_fme.html FMEObjects Gateway], [http://www.gdal.org/drv_geojson.html GeoJSON], [http://www.gdal.org/drv_geoconcept.html G&amp;amp;eacute;oconcept Export], [http://www.gdal.org/drv_geomedia.html Geomedia .mdb], [http://www.gdal.org/drv_geopackage.html GeoPackage], [http://www.gdal.org/drv_georss.html GeoRSS], [http://www.gdal.org/drv_gft.html Google Fusion Tables], [http://www.gdal.org/drv_gml.html GML], [http://www.gdal.org/drv_gmt.html GMT], [http://www.gdal.org/drv_gpsbabel.html GPSBabel], [http://www.gdal.org/drv_gpx.html GPX], [http://www.gdal.org/drv_grass.html GRASS Vector Format], [http://www.gdal.org/drv_gtm.html GPSTrackMaker (.gtm, .gtz)], [http://www.gdal.org/drv_htf.html Hydrographic Transfer Format], [http://www.gdal.org/drv_idrisi.html Idrisi Vector (.VCT)], [http://www.gdal.org/drv_idb.html Informix DataBlade], [http://www.gdal.org/drv_ili.html INTERLIS], [http://www.gdal.org/drv_ingres.html INGRES], [http://www.gdal.org/drv_jml.html JML], [http://www.gdal.org/drv_kml.html KML], [http://www.gdal.org/drv_libkml.html LIBKML], [http://www.gdal.org/drv_mitab.html Mapinfo File], [http://www.gdal.org/drv_dgn.html Microstation DGN], [http://www.gdal.org/drv_mdb.html Access MDB (PGeo and Geomedia capable)], [http://www.gdal.org/drv_memory.html Memory], [http://www.gdal.org/drv_mongodb.html MongoDB], [http://www.gdal.org/drv_mysql.html MySQL], [http://www.gdal.org/drv_nas.html NAS - ALKIS], [http://www.gdal.org/drv_oci.html Oracle Spatial], [http://www.gdal.org/drv_odbc.html ODBC], [http://www.gdal.org/drv_mssqlspatial.html MS SQL Spatial], [http://www.gdal.org/drv_ods.html Open Document Spreadsheet], [http://www.gdal.org/drv_ogdi.html OGDI Vectors (VPF, VMAP, DCW)], [http://www.gdal.org/drv_openair.html OpenAir], [http://www.gdal.org/drv_openfilegdb.html ESRI FileGDB], [http://www.gdal.org/drv_osm.html OpenStreetMap XML and PBF], [http://www.gdal.org/drv_pds.html PDS], [http://www.gdal.org/drv_plscenes.html Planet Labs Scenes API], [http://www.gdal.org/drv_pgdump.html PostgreSQL SQL dump], [http://www.gdal.org/drv_pg.html PostgreSQL/PostGIS], [http://www.gdal.org/drv_s57.html S-57 (ENC)], [http://www.gdal.org/drv_sdts.html SDTS], [http://www.gdal.org/drv_segukooa.html SEG-P1 / UKOOA P1/90], [http://www.gdal.org/drv_segy.html SEG-Y], [http://www.gdal.org/drv_selafin.html Selafin/Seraphin format], [http://www.gdal.org/drv_sqlite.html SQLite/SpatiaLite], [http://www.gdal.org/drv_sua.html SUA], [http://www.gdal.org/drv_svg.html SVG], [http://www.gdal.org/drv_sxf.html Storage and eXchange Format], [http://www.gdal.org/drv_ntf.html UK .NTF], [http://www.gdal.org/drv_tiger.html U.S. Census TIGER/Line], [http://www.gdal.org/drv_vrt.html VRT - Virtual Datasource], [http://www.gdal.org/drv_wfs.html OGC WFS (Web Feature Service)], [http://www.gdal.org/drv_xls.html MS Excel format], [http://www.gdal.org/drv_xlsx.html MS Office Open XML spreadsheet], [http://www.gdal.org/drv_xplane.html X-Plane/Flightgear aeronautical data], [http://www.gdal.org/drv_vdv.html VDV-451/VDV-452/IDF], [http://www.gdal.org/drv_walk.html Walk], [http://www.gdal.org/drv_wasp.html WAsP .map format].&lt;br /&gt;
&lt;br /&gt;
===Hozzáférés a filehoz===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az OGR könyvtár úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használ. A következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése===&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;layer = datasource.GetLayer()&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
===Attribútumok===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Népsűrűség ábrázolása térképen===&lt;br /&gt;
&lt;br /&gt;
Az alábbi kód, egy meglévő shapefile rétegre egy másikat generál, egy megadott atríbútum táblából, aminek segítségével szemlélteti, hogy az adott területeken mekkora a népsűrűség. Ehhez pontokat generál, egy pont 100 embert reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
import random&lt;br /&gt;
# shapefile megnyitasa ogr reteg letrehozasa elso feature lekerese&lt;br /&gt;
source = ogr.Open(&amp;quot;GIS_CensusTract_poly.shp&amp;quot;)&lt;br /&gt;
county = source.GetLayer(&amp;quot;GIS_CensusTract_poly&amp;quot;)&lt;br /&gt;
feature = county.GetNextFeature()&lt;br /&gt;
# kimeneti shapefile es reteg letrehozasa&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
output = driver.CreateDataSource(&amp;quot;PopDensity.shp&amp;quot;)&lt;br /&gt;
dots = output.CreateLayer(&amp;quot;PopDensity&amp;quot;, geom_type=ogr.wkbPoint)&lt;br /&gt;
while feature is not None:&lt;br /&gt;
  field_index = feature.GetFieldIndex(&amp;quot;POPULAT11&amp;quot;)&lt;br /&gt;
  population = int(feature.GetField(field_index))&lt;br /&gt;
  # 1 pont szaz embert reprezental &lt;br /&gt;
  density = population / 100&lt;br /&gt;
  count = 0   &lt;br /&gt;
  while count &amp;lt; density:&lt;br /&gt;
    geometry = feature.GetGeometryRef()&lt;br /&gt;
    minx, maxx, miny, maxy = geometry.GetEnvelope()&lt;br /&gt;
    x = random.uniform(minx,maxx)&lt;br /&gt;
    y = random.uniform(miny,maxy)&lt;br /&gt;
    f = ogr.Feature(feature_def=dots.GetLayerDefn())&lt;br /&gt;
    wkt = &amp;quot;POINT(%f %f)&amp;quot; % (x,y)&lt;br /&gt;
    point = ogr.CreateGeometryFromWkt(wkt)&lt;br /&gt;
    # Csak akkor hasznaljuk a pontot, ha benne van az adott alakzatban&lt;br /&gt;
    if feature.GetGeometryRef().Contains(point):&lt;br /&gt;
        f.SetGeometryDirectly(point)&lt;br /&gt;
        dots.CreateFeature(f)&lt;br /&gt;
        count += 1&lt;br /&gt;
    # objektum eltorlese&lt;br /&gt;
    f.Destroy()&lt;br /&gt;
  feature = county.GetNextFeature()&lt;br /&gt;
source.Destroy()&lt;br /&gt;
output.Destroy()  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hivatkozások ==&lt;br /&gt;
&lt;br /&gt;
http://www.gdal.org/&lt;br /&gt;
&lt;br /&gt;
https://pcjericks.github.io/py-gdalogr-cookbook/&lt;br /&gt;
&lt;br /&gt;
http://www.osgeo.org/gdal_ogr&lt;br /&gt;
&lt;br /&gt;
http://geoexamples.com/&lt;br /&gt;
&lt;br /&gt;
http://www.digital-geography.com/create-and-edit-shapefiles-with-python-only/&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=240</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=240"/>
		<updated>2016-06-19T15:00:01Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: /* Buktatók */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt &lt;br /&gt;
könyvtárakhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek a funkciók. A két könyvtár Python kötését a [http://www.swig.org/index.php SWIG] eszköz segítségével generálják. Az alkalmazásprogramozási felület (API) általában pontosan követi a GDAL és OGR könyvtárak C++  implementációiban használt osztályok és eljárások megnevezéseit. Az elérhető hivatalos dokumentáció (http://gdal.org/python) is automatikusan generált, a meglévő C/C++ függvények leírásai alapján. &lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
&lt;br /&gt;
A GDAL/OGR könyvtárak használatához a következőkre van szükség:&lt;br /&gt;
*    Python 2.X (Python 3.X a GDAL 1.7.0 verziójától kezdődően). Python 2-höz ajánlott 2.3 és 2.7 közötti verziót használni.&lt;br /&gt;
*    libgdal (1.5.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (gdal-devel)&lt;br /&gt;
*    numpy (1.0.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (numpy-devel)&lt;br /&gt;
A numpy telepítése nem feltétlenül szükséges, viszont sok példaprogram és eszköz használja, ezért ajánlott.&lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
=== GNU/Linux ===&lt;br /&gt;
A GDAL/OGR könyvtár és a Python kötések telepítését elvégezhetjük [https://docs.python.org/2/library/distutils.html distutils] vagy [https://pypi.python.org/pypi/setuptools setuptools] segítségével (az utóbbi használata ajánlott). Setuptools-t használva a telepítést a következő paranccsal végezhetjük el:&lt;br /&gt;
&lt;br /&gt;
 $ sudo easy_install GDAL&lt;br /&gt;
&lt;br /&gt;
Ha nem szeretnénk feltétlenül a legfrissebb verziót használni és megelégszünk az adott Linux disztribúció repozitóriumában fellelhető verzióval, akkor talán legegyszerűbb a csomagkezelőt használni a telepítésre. Ubuntu operációs rendszeren például a következő paranccsal telepíthető a GDAL/OGR könyvtárak Python kötése:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install gdal-bin python-gdal&lt;br /&gt;
&lt;br /&gt;
Ha [https://trac.osgeo.org/gdal/wiki/DownloadSource forrásból] szeretnénk lefordítani a legújabb verziót, akkor a Python kötéshez a &amp;lt;code&amp;gt;--with-python&amp;lt;/code&amp;gt; kapcsolót kell használni:&lt;br /&gt;
&lt;br /&gt;
 $ ./configure --with-python&lt;br /&gt;
&lt;br /&gt;
Ezután a szokásos módon a &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; eszköz elvégzi a fordítást és a telepítést:&lt;br /&gt;
&lt;br /&gt;
 $ make&lt;br /&gt;
 $ make install&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
A GDAL/OGR könyvtár Python kötésének telepítéséhez a következő lépésekre lesz szükség:&lt;br /&gt;
* [http://download.osgeo.org/gdal/win32/1.6/ GDAL Windows bináris fájlok] letöltése és kicsomagolása. Alapesetben csak a gdalwin32exe160.zip nevű fájlra lesz szükség. A könyvtárban fellelhető többi fájl bővítmények fejlesztéséhez szükséges. A zip fájlt bárhova ki lehet csomagolni, példa gyanánt a &amp;lt;code&amp;gt;C:\gdalwin32-1.6&amp;lt;/code&amp;gt; könyvtárat fogjuk használni. A kicsomagolás után a &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt; rendszerváltozót [http://www.computerhope.com/issues/ch000549.htm módosítani] kell, hozzá kell adni a &amp;lt;code&amp;gt;C:\gdalwin32-1.6\bin&amp;lt;/code&amp;gt; elérési útvonalat.&lt;br /&gt;
* Létre kell hozni a &amp;lt;code&amp;gt;GDAL_DATA&amp;lt;/code&amp;gt; nevű rendszerváltozót, aminek az értéke az adatokat tartalmazó könyvtár neve, jelen esetben &amp;lt;code&amp;gt;C:\gdalwin32-1.6\data&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Szükséges lehet az operációs rendszer újraindítása.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
A GDAL Python kötésében öt főmodult érhetünk el a következő módon:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import ogr&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import osr&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal_array&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdalconst&lt;br /&gt;
&lt;br /&gt;
=== Buktatók ===&lt;br /&gt;
&lt;br /&gt;
Annak ellenére, hogy a Python kötések használata teljesen elrejti a mögöttes C++ könyvtárat, használata pár apró dologban mégis eltér a megszokott Python modulok használatától, amire érdemes figyelnie a Python programozónak:&lt;br /&gt;
&lt;br /&gt;
==== A Python kötés nem használ kivételeket ====&lt;br /&gt;
&lt;br /&gt;
A Python kötés alapértelmezetten nem használja a kivételeket, ehelyett meghatározott hibaértéket térít vissza az adott függvény, és egy hibaüzenet jelenik meg a standard kimeneten. Például ha egy nemlétező fájlt próbálunk megnyitni, ez az alapértelmezett működés:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.Open(&amp;#039;/home/user/nincsilyen.img&amp;#039;)&lt;br /&gt;
 ERROR 4: `/home/user/nincsilyen.img&amp;#039; does not exist in the file system,&lt;br /&gt;
 and is not recognised as a supported dataset name.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ha mégis használni szeretnénk a kivételeket, akkor ezeket explicit módon engedélyezni kell az &amp;lt;code&amp;gt;UseExceptions()&amp;lt;/code&amp;gt; meghívásával. &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from osgeo import gdal&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.UseExceptions()        # Kivetelek engedelyezese&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; gdal.Open(&amp;#039;/home/user/nincsilyen.img&amp;#039;)&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
 RuntimeError: `/home/user/nincsilyen.img&amp;#039; does not exist in the file system,&lt;br /&gt;
 and is not recognised as a supported dataset name.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez megkötés a visszamenőleges kompatibilitás miatt szükséges.  &lt;br /&gt;
&lt;br /&gt;
===Támogatott adatformátumok===&lt;br /&gt;
&lt;br /&gt;
Az OGR könyvtár segítségével számos vektoros formátumot (állománytípust vagy egyéb adatforrást) tudunk kezelni, például:&lt;br /&gt;
*  ESRI shapefile&lt;br /&gt;
*  personal geodatabase (térinformatikai adatokat tároló Microsoft Access adatbázis)&lt;br /&gt;
*  ArcSDE adatbázis&lt;br /&gt;
*  MapInfo formátum&lt;br /&gt;
*  GRASS formátum&lt;br /&gt;
*  Bentley Systems MicroStation formátum&lt;br /&gt;
*  TIGER/Line&lt;br /&gt;
*  SDTS&lt;br /&gt;
*  GML&lt;br /&gt;
*  KML&lt;br /&gt;
*  MySQL, PostgreSQL, MariaDB, stb&lt;br /&gt;
*  Oracle Spatial&lt;br /&gt;
*  Informix&lt;br /&gt;
*  ODBC&lt;br /&gt;
&lt;br /&gt;
===Hozzáférés a filehoz===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az OGR könyvtár úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használ. A következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése===&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;layer = datasource.GetLayer()&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
===Attribútumok===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Népsűrűség ábrázolása térképen===&lt;br /&gt;
&lt;br /&gt;
Az alábbi kód, egy meglévő shapefile rétegre egy másikat generál, egy megadott atríbútum táblából, aminek segítségével szemlélteti, hogy az adott területeken mekkora a népsűrűség. Ehhez pontokat generál, egy pont 100 embert reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
import random&lt;br /&gt;
# shapefile megnyitasa ogr reteg letrehozasa elso feature lekerese&lt;br /&gt;
source = ogr.Open(&amp;quot;GIS_CensusTract_poly.shp&amp;quot;)&lt;br /&gt;
county = source.GetLayer(&amp;quot;GIS_CensusTract_poly&amp;quot;)&lt;br /&gt;
feature = county.GetNextFeature()&lt;br /&gt;
# kimeneti shapefile es reteg letrehozasa&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
output = driver.CreateDataSource(&amp;quot;PopDensity.shp&amp;quot;)&lt;br /&gt;
dots = output.CreateLayer(&amp;quot;PopDensity&amp;quot;, geom_type=ogr.wkbPoint)&lt;br /&gt;
while feature is not None:&lt;br /&gt;
  field_index = feature.GetFieldIndex(&amp;quot;POPULAT11&amp;quot;)&lt;br /&gt;
  population = int(feature.GetField(field_index))&lt;br /&gt;
  # 1 pont szaz embert reprezental &lt;br /&gt;
  density = population / 100&lt;br /&gt;
  count = 0   &lt;br /&gt;
  while count &amp;lt; density:&lt;br /&gt;
    geometry = feature.GetGeometryRef()&lt;br /&gt;
    minx, maxx, miny, maxy = geometry.GetEnvelope()&lt;br /&gt;
    x = random.uniform(minx,maxx)&lt;br /&gt;
    y = random.uniform(miny,maxy)&lt;br /&gt;
    f = ogr.Feature(feature_def=dots.GetLayerDefn())&lt;br /&gt;
    wkt = &amp;quot;POINT(%f %f)&amp;quot; % (x,y)&lt;br /&gt;
    point = ogr.CreateGeometryFromWkt(wkt)&lt;br /&gt;
    # Csak akkor hasznaljuk a pontot, ha benne van az adott alakzatban&lt;br /&gt;
    if feature.GetGeometryRef().Contains(point):&lt;br /&gt;
        f.SetGeometryDirectly(point)&lt;br /&gt;
        dots.CreateFeature(f)&lt;br /&gt;
        count += 1&lt;br /&gt;
    # objektum eltorlese&lt;br /&gt;
    f.Destroy()&lt;br /&gt;
  feature = county.GetNextFeature()&lt;br /&gt;
source.Destroy()&lt;br /&gt;
output.Destroy()  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hivatkozások ==&lt;br /&gt;
&lt;br /&gt;
http://www.gdal.org/&lt;br /&gt;
&lt;br /&gt;
https://pcjericks.github.io/py-gdalogr-cookbook/&lt;br /&gt;
&lt;br /&gt;
http://www.osgeo.org/gdal_ogr&lt;br /&gt;
&lt;br /&gt;
http://geoexamples.com/&lt;br /&gt;
&lt;br /&gt;
http://www.digital-geography.com/create-and-edit-shapefiles-with-python-only/&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=239</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=239"/>
		<updated>2016-06-19T09:48:40Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt &lt;br /&gt;
könyvtárakhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek a funkciók. A két könyvtár Python kötését a [http://www.swig.org/index.php SWIG] eszköz segítségével generálják. Az alkalmazásprogramozási felület (API) általában pontosan követi a GDAL és OGR könyvtárak C++  implementációiban használt osztályok és eljárások megnevezéseit. Az elérhető hivatalos dokumentáció (http://gdal.org/python) is automatikusan generált, a meglévő C/C++ függvények leírásai alapján. &lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
&lt;br /&gt;
A GDAL/OGR könyvtárak használatához a következőkre van szükség:&lt;br /&gt;
*    Python 2.X (Python 3.X a GDAL 1.7.0 verziójától kezdődően). Python 2-höz ajánlott 2.3 és 2.7 közötti verziót használni.&lt;br /&gt;
*    libgdal (1.5.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (gdal-devel)&lt;br /&gt;
*    numpy (1.0.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (numpy-devel)&lt;br /&gt;
A numpy telepítése nem feltétlenül szükséges, viszont sok példaprogram és eszköz használja, ezért ajánlott.&lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
=== GNU/Linux ===&lt;br /&gt;
A GDAL/OGR könyvtár és a Python kötések telepítését elvégezhetjük [https://docs.python.org/2/library/distutils.html distutils] vagy [https://pypi.python.org/pypi/setuptools setuptools] segítségével (az utóbbi használata ajánlott). Setuptools-t használva a telepítést a következő paranccsal végezhetjük el:&lt;br /&gt;
&lt;br /&gt;
 $ sudo easy_install GDAL&lt;br /&gt;
&lt;br /&gt;
Ha nem szeretnénk feltétlenül a legfrissebb verziót használni és megelégszünk az adott Linux disztribúció repozitóriumában fellelhető verzióval, akkor talán legegyszerűbb a csomagkezelőt használni a telepítésre. Ubuntu operációs rendszeren például a következő paranccsal telepíthető a GDAL/OGR könyvtárak Python kötése:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install gdal-bin python-gdal&lt;br /&gt;
&lt;br /&gt;
Ha [https://trac.osgeo.org/gdal/wiki/DownloadSource forrásból] szeretnénk lefordítani a legújabb verziót, akkor a Python kötéshez a &amp;lt;code&amp;gt;--with-python&amp;lt;/code&amp;gt; kapcsolót kell használni:&lt;br /&gt;
&lt;br /&gt;
 $ ./configure --with-python&lt;br /&gt;
&lt;br /&gt;
Ezután a szokásos módon a &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; eszköz elvégzi a fordítást és a telepítést:&lt;br /&gt;
&lt;br /&gt;
 $ make&lt;br /&gt;
 $ make install&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
A GDAL/OGR könyvtár Python kötésének telepítéséhez a következő lépésekre lesz szükség:&lt;br /&gt;
* [http://download.osgeo.org/gdal/win32/1.6/ GDAL Windows bináris fájlok] letöltése és kicsomagolása. Alapesetben csak a gdalwin32exe160.zip nevű fájlra lesz szükség. A könyvtárban fellelhető többi fájl bővítmények fejlesztéséhez szükséges. A zip fájlt bárhova ki lehet csomagolni, példa gyanánt a &amp;lt;code&amp;gt;C:\gdalwin32-1.6&amp;lt;/code&amp;gt; könyvtárat fogjuk használni. A kicsomagolás után a &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt; rendszerváltozót [http://www.computerhope.com/issues/ch000549.htm módosítani] kell, hozzá kell adni a &amp;lt;code&amp;gt;C:\gdalwin32-1.6\bin&amp;lt;/code&amp;gt; elérési útvonalat.&lt;br /&gt;
* Létre kell hozni a &amp;lt;code&amp;gt;GDAL_DATA&amp;lt;/code&amp;gt; nevű rendszerváltozót, aminek az értéke az adatokat tartalmazó könyvtár neve, jelen esetben &amp;lt;code&amp;gt;C:\gdalwin32-1.6\data&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Szükséges lehet az operációs rendszer újraindítása.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
===Támogatott adatformátumok===&lt;br /&gt;
&lt;br /&gt;
Az OGR könyvtár segítségével számos vektoros formátumot (állománytípust vagy egyéb&lt;br /&gt;
&lt;br /&gt;
adatforrást) tudunk kezelni, például:&lt;br /&gt;
&lt;br /&gt;
*  ESRI shapefile&lt;br /&gt;
&lt;br /&gt;
*  personal geodatabase (térinformatikai adatokat tároló Microsoft Access adatbázis)&lt;br /&gt;
&lt;br /&gt;
*  ArcSDE adatbázis&lt;br /&gt;
&lt;br /&gt;
*  MapInfo formátum&lt;br /&gt;
&lt;br /&gt;
*  GRASS formátum&lt;br /&gt;
&lt;br /&gt;
*  Bentley Systems MicroStation formátum&lt;br /&gt;
&lt;br /&gt;
*  TIGER/Line&lt;br /&gt;
&lt;br /&gt;
*  SDTS&lt;br /&gt;
&lt;br /&gt;
*  GML&lt;br /&gt;
&lt;br /&gt;
*  KML&lt;br /&gt;
&lt;br /&gt;
*  MySQL, PostgreSQL, MariaDB, stb&lt;br /&gt;
&lt;br /&gt;
*  Oracle Spatial&lt;br /&gt;
&lt;br /&gt;
*  Informix&lt;br /&gt;
&lt;br /&gt;
*  ODBC&lt;br /&gt;
&lt;br /&gt;
===Hozzáférés a filehoz===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az OGR könyvtár úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használ. A következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése===&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;layer = datasource.GetLayer()&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
===Attribútumok===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Népsűrűség ábrázolása térképen===&lt;br /&gt;
&lt;br /&gt;
Az alábbi kód, egy meglévő shapefile rétegre egy másikat generál, egy megadott atríbútum táblából, aminek segítségével szemlélteti, hogy az adott területeken mekkora a népsűrűség. Ehhez pontokat generál, egy pont 100 embert reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
import random&lt;br /&gt;
# shapefile megnyitasa ogr reteg letrehozasa elso feature lekerese&lt;br /&gt;
source = ogr.Open(&amp;quot;GIS_CensusTract_poly.shp&amp;quot;)&lt;br /&gt;
county = source.GetLayer(&amp;quot;GIS_CensusTract_poly&amp;quot;)&lt;br /&gt;
feature = county.GetNextFeature()&lt;br /&gt;
# kimeneti shapefile es reteg letrehozasa&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
output = driver.CreateDataSource(&amp;quot;PopDensity.shp&amp;quot;)&lt;br /&gt;
dots = output.CreateLayer(&amp;quot;PopDensity&amp;quot;, geom_type=ogr.wkbPoint)&lt;br /&gt;
while feature is not None:&lt;br /&gt;
  field_index = feature.GetFieldIndex(&amp;quot;POPULAT11&amp;quot;)&lt;br /&gt;
  population = int(feature.GetField(field_index))&lt;br /&gt;
  # 1 pont szaz embert reprezental &lt;br /&gt;
  density = population / 100&lt;br /&gt;
  count = 0   &lt;br /&gt;
  while count &amp;lt; density:&lt;br /&gt;
    geometry = feature.GetGeometryRef()&lt;br /&gt;
    minx, maxx, miny, maxy = geometry.GetEnvelope()&lt;br /&gt;
    x = random.uniform(minx,maxx)&lt;br /&gt;
    y = random.uniform(miny,maxy)&lt;br /&gt;
    f = ogr.Feature(feature_def=dots.GetLayerDefn())&lt;br /&gt;
    wkt = &amp;quot;POINT(%f %f)&amp;quot; % (x,y)&lt;br /&gt;
    point = ogr.CreateGeometryFromWkt(wkt)&lt;br /&gt;
    # Csak akkor hasznaljuk a pontot, ha benne van az adott alakzatban&lt;br /&gt;
    if feature.GetGeometryRef().Contains(point):&lt;br /&gt;
        f.SetGeometryDirectly(point)&lt;br /&gt;
        dots.CreateFeature(f)&lt;br /&gt;
        count += 1&lt;br /&gt;
    # objektum eltorlese&lt;br /&gt;
    f.Destroy()&lt;br /&gt;
  feature = county.GetNextFeature()&lt;br /&gt;
source.Destroy()&lt;br /&gt;
output.Destroy()  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hivatkozások ==&lt;br /&gt;
&lt;br /&gt;
http://www.gdal.org/&lt;br /&gt;
&lt;br /&gt;
https://pcjericks.github.io/py-gdalogr-cookbook/&lt;br /&gt;
&lt;br /&gt;
http://www.osgeo.org/gdal_ogr&lt;br /&gt;
&lt;br /&gt;
http://geoexamples.com/&lt;br /&gt;
&lt;br /&gt;
http://www.digital-geography.com/create-and-edit-shapefiles-with-python-only/&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=238</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=238"/>
		<updated>2016-06-19T09:48:20Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: /* Telepítés */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt &lt;br /&gt;
könyvtárakhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek a funkciók. A két könyvtár Python kötését a [http://www.swig.org/index.php SWIG] eszköz segítségével generálják. Az alkalmazásprogramozási felület (API) általában pontosan követi a GDAL és OGR könyvtárak C++  implementációiban használt osztályok és eljárások megnevezéseit. Az elérhető hivatalos dokumentáció (http://gdal.org/python) is automatikusan generált, a meglévő C/C++ függvények leírásai alapján. &lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
&lt;br /&gt;
A GDAL/OGR könyvtárak használatához a következőkre van szükség:&lt;br /&gt;
*    Python 2.X (Python 3.X a GDAL 1.7.0 verziójától kezdődően). Python 2-höz ajánlott 2.3 és 2.7 közötti verziót használni.&lt;br /&gt;
*    libgdal (1.5.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (gdal-devel)&lt;br /&gt;
*    numpy (1.0.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (numpy-devel)&lt;br /&gt;
A numpy telepítése nem feltétlenül szükséges, viszont sok példaprogram és eszköz használja, ezért ajánlott.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
=== GNU/Linux ===&lt;br /&gt;
A GDAL/OGR könyvtár és a Python kötések telepítését elvégezhetjük [https://docs.python.org/2/library/distutils.html distutils] vagy [https://pypi.python.org/pypi/setuptools setuptools] segítségével (az utóbbi használata ajánlott). Setuptools-t használva a telepítést a következő paranccsal végezhetjük el:&lt;br /&gt;
&lt;br /&gt;
 $ sudo easy_install GDAL&lt;br /&gt;
&lt;br /&gt;
Ha nem szeretnénk feltétlenül a legfrissebb verziót használni és megelégszünk az adott Linux disztribúció repozitóriumában fellelhető verzióval, akkor talán legegyszerűbb a csomagkezelőt használni a telepítésre. Ubuntu operációs rendszeren például a következő paranccsal telepíthető a GDAL/OGR könyvtárak Python kötése:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install gdal-bin python-gdal&lt;br /&gt;
&lt;br /&gt;
Ha [https://trac.osgeo.org/gdal/wiki/DownloadSource forrásból] szeretnénk lefordítani a legújabb verziót, akkor a Python kötéshez a &amp;lt;code&amp;gt;--with-python&amp;lt;/code&amp;gt; kapcsolót kell használni:&lt;br /&gt;
&lt;br /&gt;
 $ ./configure --with-python&lt;br /&gt;
&lt;br /&gt;
Ezután a szokásos módon a &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; eszköz elvégzi a fordítást és a telepítést:&lt;br /&gt;
&lt;br /&gt;
 $ make&lt;br /&gt;
 $ make install&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
A GDAL/OGR könyvtár Python kötésének telepítéséhez a következő lépésekre lesz szükség:&lt;br /&gt;
* [http://download.osgeo.org/gdal/win32/1.6/ GDAL Windows bináris fájlok] letöltése és kicsomagolása. Alapesetben csak a gdalwin32exe160.zip nevű fájlra lesz szükség. A könyvtárban fellelhető többi fájl bővítmények fejlesztéséhez szükséges. A zip fájlt bárhova ki lehet csomagolni, példa gyanánt a &amp;lt;code&amp;gt;C:\gdalwin32-1.6&amp;lt;/code&amp;gt; könyvtárat fogjuk használni. A kicsomagolás után a &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt; rendszerváltozót [http://www.computerhope.com/issues/ch000549.htm módosítani] kell, hozzá kell adni a &amp;lt;code&amp;gt;C:\gdalwin32-1.6\bin&amp;lt;/code&amp;gt; elérési útvonalat.&lt;br /&gt;
* Létre kell hozni a &amp;lt;code&amp;gt;GDAL_DATA&amp;lt;/code&amp;gt; nevű rendszerváltozót, aminek az értéke az adatokat tartalmazó könyvtár neve, jelen esetben &amp;lt;code&amp;gt;C:\gdalwin32-1.6\data&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Szükséges lehet az operációs rendszer újraindítása.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
===Támogatott adatformátumok===&lt;br /&gt;
&lt;br /&gt;
Az OGR könyvtár segítségével számos vektoros formátumot (állománytípust vagy egyéb&lt;br /&gt;
&lt;br /&gt;
adatforrást) tudunk kezelni, például:&lt;br /&gt;
&lt;br /&gt;
*  ESRI shapefile&lt;br /&gt;
&lt;br /&gt;
*  personal geodatabase (térinformatikai adatokat tároló Microsoft Access adatbázis)&lt;br /&gt;
&lt;br /&gt;
*  ArcSDE adatbázis&lt;br /&gt;
&lt;br /&gt;
*  MapInfo formátum&lt;br /&gt;
&lt;br /&gt;
*  GRASS formátum&lt;br /&gt;
&lt;br /&gt;
*  Bentley Systems MicroStation formátum&lt;br /&gt;
&lt;br /&gt;
*  TIGER/Line&lt;br /&gt;
&lt;br /&gt;
*  SDTS&lt;br /&gt;
&lt;br /&gt;
*  GML&lt;br /&gt;
&lt;br /&gt;
*  KML&lt;br /&gt;
&lt;br /&gt;
*  MySQL, PostgreSQL, MariaDB, stb&lt;br /&gt;
&lt;br /&gt;
*  Oracle Spatial&lt;br /&gt;
&lt;br /&gt;
*  Informix&lt;br /&gt;
&lt;br /&gt;
*  ODBC&lt;br /&gt;
&lt;br /&gt;
===Hozzáférés a filehoz===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az OGR könyvtár úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használ. A következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése===&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;layer = datasource.GetLayer()&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
===Attribútumok===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Népsűrűség ábrázolása térképen===&lt;br /&gt;
&lt;br /&gt;
Az alábbi kód, egy meglévő shapefile rétegre egy másikat generál, egy megadott atríbútum táblából, aminek segítségével szemlélteti, hogy az adott területeken mekkora a népsűrűség. Ehhez pontokat generál, egy pont 100 embert reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
import random&lt;br /&gt;
# shapefile megnyitasa ogr reteg letrehozasa elso feature lekerese&lt;br /&gt;
source = ogr.Open(&amp;quot;GIS_CensusTract_poly.shp&amp;quot;)&lt;br /&gt;
county = source.GetLayer(&amp;quot;GIS_CensusTract_poly&amp;quot;)&lt;br /&gt;
feature = county.GetNextFeature()&lt;br /&gt;
# kimeneti shapefile es reteg letrehozasa&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
output = driver.CreateDataSource(&amp;quot;PopDensity.shp&amp;quot;)&lt;br /&gt;
dots = output.CreateLayer(&amp;quot;PopDensity&amp;quot;, geom_type=ogr.wkbPoint)&lt;br /&gt;
while feature is not None:&lt;br /&gt;
  field_index = feature.GetFieldIndex(&amp;quot;POPULAT11&amp;quot;)&lt;br /&gt;
  population = int(feature.GetField(field_index))&lt;br /&gt;
  # 1 pont szaz embert reprezental &lt;br /&gt;
  density = population / 100&lt;br /&gt;
  count = 0   &lt;br /&gt;
  while count &amp;lt; density:&lt;br /&gt;
    geometry = feature.GetGeometryRef()&lt;br /&gt;
    minx, maxx, miny, maxy = geometry.GetEnvelope()&lt;br /&gt;
    x = random.uniform(minx,maxx)&lt;br /&gt;
    y = random.uniform(miny,maxy)&lt;br /&gt;
    f = ogr.Feature(feature_def=dots.GetLayerDefn())&lt;br /&gt;
    wkt = &amp;quot;POINT(%f %f)&amp;quot; % (x,y)&lt;br /&gt;
    point = ogr.CreateGeometryFromWkt(wkt)&lt;br /&gt;
    # Csak akkor hasznaljuk a pontot, ha benne van az adott alakzatban&lt;br /&gt;
    if feature.GetGeometryRef().Contains(point):&lt;br /&gt;
        f.SetGeometryDirectly(point)&lt;br /&gt;
        dots.CreateFeature(f)&lt;br /&gt;
        count += 1&lt;br /&gt;
    # objektum eltorlese&lt;br /&gt;
    f.Destroy()&lt;br /&gt;
  feature = county.GetNextFeature()&lt;br /&gt;
source.Destroy()&lt;br /&gt;
output.Destroy()  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hivatkozások ==&lt;br /&gt;
&lt;br /&gt;
http://www.gdal.org/&lt;br /&gt;
&lt;br /&gt;
https://pcjericks.github.io/py-gdalogr-cookbook/&lt;br /&gt;
&lt;br /&gt;
http://www.osgeo.org/gdal_ogr&lt;br /&gt;
&lt;br /&gt;
http://geoexamples.com/&lt;br /&gt;
&lt;br /&gt;
http://www.digital-geography.com/create-and-edit-shapefiles-with-python-only/&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=237</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=237"/>
		<updated>2016-06-18T14:50:02Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt &lt;br /&gt;
könyvtárakhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek a funkciók. A két könyvtár Python kötését a [http://www.swig.org/index.php SWIG] eszköz segítségével generálják. Az alkalmazásprogramozási felület (API) általában pontosan követi a GDAL és OGR könyvtárak C++  implementációiban használt osztályok és eljárások megnevezéseit. Az elérhető hivatalos dokumentáció (http://gdal.org/python) is automatikusan generált, a meglévő C/C++ függvények leírásai alapján. &lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
&lt;br /&gt;
A GDAL/OGR könyvtárak használatához a következőkre van szükség:&lt;br /&gt;
*    Python 2.X (Python 3.X a GDAL 1.7.0 verziójától kezdődően). Python 2-höz ajánlott 2.3 és 2.7 közötti verziót használni.&lt;br /&gt;
*    libgdal (1.5.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (gdal-devel)&lt;br /&gt;
*    numpy (1.0.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (numpy-devel)&lt;br /&gt;
A numpy telepítése nem feltétlenül szükséges, viszont sok példaprogram és eszköz használja, ezért ajánlott.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
===Támogatott adatformátumok===&lt;br /&gt;
&lt;br /&gt;
Az OGR könyvtár segítségével számos vektoros formátumot (állománytípust vagy egyéb&lt;br /&gt;
&lt;br /&gt;
adatforrást) tudunk kezelni, például:&lt;br /&gt;
&lt;br /&gt;
*  ESRI shapefile&lt;br /&gt;
&lt;br /&gt;
*  personal geodatabase (térinformatikai adatokat tároló Microsoft Access adatbázis)&lt;br /&gt;
&lt;br /&gt;
*  ArcSDE adatbázis&lt;br /&gt;
&lt;br /&gt;
*  MapInfo formátum&lt;br /&gt;
&lt;br /&gt;
*  GRASS formátum&lt;br /&gt;
&lt;br /&gt;
*  Bentley Systems MicroStation formátum&lt;br /&gt;
&lt;br /&gt;
*  TIGER/Line&lt;br /&gt;
&lt;br /&gt;
*  SDTS&lt;br /&gt;
&lt;br /&gt;
*  GML&lt;br /&gt;
&lt;br /&gt;
*  KML&lt;br /&gt;
&lt;br /&gt;
*  MySQL, PostgreSQL, MariaDB, stb&lt;br /&gt;
&lt;br /&gt;
*  Oracle Spatial&lt;br /&gt;
&lt;br /&gt;
*  Informix&lt;br /&gt;
&lt;br /&gt;
*  ODBC&lt;br /&gt;
&lt;br /&gt;
===Hozzáférés a filehoz===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az OGR könyvtár úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használ. A következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése===&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;layer = datasource.GetLayer()&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
===Attribútumok===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Népsűrűség ábrázolása térképen===&lt;br /&gt;
&lt;br /&gt;
Az alábbi kód, egy meglévő shapefile rétegre egy másikat generál, egy megadott atríbútum táblából, aminek segítségével szemlélteti, hogy az adott területeken mekkora a népsűrűség. Ehhez pontokat generál, egy pont 100 embert reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
import random&lt;br /&gt;
# shapefile megnyitasa ogr reteg letrehozasa elso feature lekerese&lt;br /&gt;
source = ogr.Open(&amp;quot;GIS_CensusTract_poly.shp&amp;quot;)&lt;br /&gt;
county = source.GetLayer(&amp;quot;GIS_CensusTract_poly&amp;quot;)&lt;br /&gt;
feature = county.GetNextFeature()&lt;br /&gt;
# kimeneti shapefile es reteg letrehozasa&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
output = driver.CreateDataSource(&amp;quot;PopDensity.shp&amp;quot;)&lt;br /&gt;
dots = output.CreateLayer(&amp;quot;PopDensity&amp;quot;, geom_type=ogr.wkbPoint)&lt;br /&gt;
while feature is not None:&lt;br /&gt;
  field_index = feature.GetFieldIndex(&amp;quot;POPULAT11&amp;quot;)&lt;br /&gt;
  population = int(feature.GetField(field_index))&lt;br /&gt;
  # 1 pont szaz embert reprezental &lt;br /&gt;
  density = population / 100&lt;br /&gt;
  count = 0   &lt;br /&gt;
  while count &amp;lt; density:&lt;br /&gt;
    geometry = feature.GetGeometryRef()&lt;br /&gt;
    minx, maxx, miny, maxy = geometry.GetEnvelope()&lt;br /&gt;
    x = random.uniform(minx,maxx)&lt;br /&gt;
    y = random.uniform(miny,maxy)&lt;br /&gt;
    f = ogr.Feature(feature_def=dots.GetLayerDefn())&lt;br /&gt;
    wkt = &amp;quot;POINT(%f %f)&amp;quot; % (x,y)&lt;br /&gt;
    point = ogr.CreateGeometryFromWkt(wkt)&lt;br /&gt;
    # Csak akkor hasznaljuk a pontot, ha benne van az adott alakzatban&lt;br /&gt;
    if feature.GetGeometryRef().Contains(point):&lt;br /&gt;
        f.SetGeometryDirectly(point)&lt;br /&gt;
        dots.CreateFeature(f)&lt;br /&gt;
        count += 1&lt;br /&gt;
    # objektum eltorlese&lt;br /&gt;
    f.Destroy()&lt;br /&gt;
  feature = county.GetNextFeature()&lt;br /&gt;
source.Destroy()&lt;br /&gt;
output.Destroy()  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hivatkozások ==&lt;br /&gt;
&lt;br /&gt;
http://www.gdal.org/&lt;br /&gt;
&lt;br /&gt;
https://pcjericks.github.io/py-gdalogr-cookbook/&lt;br /&gt;
&lt;br /&gt;
http://www.osgeo.org/gdal_ogr&lt;br /&gt;
&lt;br /&gt;
http://geoexamples.com/&lt;br /&gt;
&lt;br /&gt;
http://www.digital-geography.com/create-and-edit-shapefiles-with-python-only/&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=236</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=236"/>
		<updated>2016-06-18T14:48:55Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: Bővebb bevezető, függőségek hozzáadása&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==GDAL/OGR modul leírása==&lt;br /&gt;
&lt;br /&gt;
A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt &lt;br /&gt;
könyvtárakhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek a funkciók. A két könyvtár Python kötését a [http://www.swig.org/index.php SWIG] eszköz segítségével generálják. Az alkalmazásprogramozási felület (API) általában pontosan követi a GDAL és OGR könyvtárak C++  implementációiban használt osztályok és eljárások megnevezéseit. Az elérhető hivatalos dokumentáció (http://gdal.org/python) is automatikusan generált, a meglévő C/C++ függvények leírásai alapján. &lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
&lt;br /&gt;
A GDAL/OGR könyvtárak használatához a következőkre van szükség:&lt;br /&gt;
*    Python 2.X (Python 3.X a GDAL 1.7.0 verziójától kezdődően). Python 2-höz ajánlott 2.3 és 2.7 közötti verziót használni.&lt;br /&gt;
*    libgdal (1.5.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (gdal-devel)&lt;br /&gt;
*    numpy (1.0.0 vagy ennél újabb verzió) a hozzá tartozó header fájlokkal együtt (numpy-devel)&lt;br /&gt;
A numpy telepítése nem feltétlenül szükséges, viszont sok példaprogram és eszköz használja, ezért ajánlott.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
===Támogatott adatformátumok===&lt;br /&gt;
&lt;br /&gt;
Az OGR könyvtár segítségével számos vektoros formátumot (állománytípust vagy egyéb&lt;br /&gt;
&lt;br /&gt;
adatforrást) tudunk kezelni, például:&lt;br /&gt;
&lt;br /&gt;
*  ESRI shapefile&lt;br /&gt;
&lt;br /&gt;
*  personal geodatabase (térinformatikai adatokat tároló Microsoft Access adatbázis)&lt;br /&gt;
&lt;br /&gt;
*  ArcSDE adatbázis&lt;br /&gt;
&lt;br /&gt;
*  MapInfo formátum&lt;br /&gt;
&lt;br /&gt;
*  GRASS formátum&lt;br /&gt;
&lt;br /&gt;
*  Bentley Systems MicroStation formátum&lt;br /&gt;
&lt;br /&gt;
*  TIGER/Line&lt;br /&gt;
&lt;br /&gt;
*  SDTS&lt;br /&gt;
&lt;br /&gt;
*  GML&lt;br /&gt;
&lt;br /&gt;
*  KML&lt;br /&gt;
&lt;br /&gt;
*  MySQL, PostgreSQL, MariaDB, stb&lt;br /&gt;
&lt;br /&gt;
*  Oracle Spatial&lt;br /&gt;
&lt;br /&gt;
*  Informix&lt;br /&gt;
&lt;br /&gt;
*  ODBC&lt;br /&gt;
&lt;br /&gt;
===Hozzáférés a filehoz===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az OGR könyvtár úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használ. A következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése===&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;layer = datasource.GetLayer()&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
===Attribútumok===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Népsűrűség ábrázolása térképen===&lt;br /&gt;
&lt;br /&gt;
Az alábbi kód, egy meglévő shapefile rétegre egy másikat generál, egy megadott atríbútum táblából, aminek segítségével szemlélteti, hogy az adott területeken mekkora a népsűrűség. Ehhez pontokat generál, egy pont 100 embert reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
import random&lt;br /&gt;
# shapefile megnyitasa ogr reteg letrehozasa elso feature lekerese&lt;br /&gt;
source = ogr.Open(&amp;quot;GIS_CensusTract_poly.shp&amp;quot;)&lt;br /&gt;
county = source.GetLayer(&amp;quot;GIS_CensusTract_poly&amp;quot;)&lt;br /&gt;
feature = county.GetNextFeature()&lt;br /&gt;
# kimeneti shapefile es reteg letrehozasa&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
output = driver.CreateDataSource(&amp;quot;PopDensity.shp&amp;quot;)&lt;br /&gt;
dots = output.CreateLayer(&amp;quot;PopDensity&amp;quot;, geom_type=ogr.wkbPoint)&lt;br /&gt;
while feature is not None:&lt;br /&gt;
  field_index = feature.GetFieldIndex(&amp;quot;POPULAT11&amp;quot;)&lt;br /&gt;
  population = int(feature.GetField(field_index))&lt;br /&gt;
  # 1 pont szaz embert reprezental &lt;br /&gt;
  density = population / 100&lt;br /&gt;
  count = 0   &lt;br /&gt;
  while count &amp;lt; density:&lt;br /&gt;
    geometry = feature.GetGeometryRef()&lt;br /&gt;
    minx, maxx, miny, maxy = geometry.GetEnvelope()&lt;br /&gt;
    x = random.uniform(minx,maxx)&lt;br /&gt;
    y = random.uniform(miny,maxy)&lt;br /&gt;
    f = ogr.Feature(feature_def=dots.GetLayerDefn())&lt;br /&gt;
    wkt = &amp;quot;POINT(%f %f)&amp;quot; % (x,y)&lt;br /&gt;
    point = ogr.CreateGeometryFromWkt(wkt)&lt;br /&gt;
    # Csak akkor hasznaljuk a pontot, ha benne van az adott alakzatban&lt;br /&gt;
    if feature.GetGeometryRef().Contains(point):&lt;br /&gt;
        f.SetGeometryDirectly(point)&lt;br /&gt;
        dots.CreateFeature(f)&lt;br /&gt;
        count += 1&lt;br /&gt;
    # objektum eltorlese&lt;br /&gt;
    f.Destroy()&lt;br /&gt;
  feature = county.GetNextFeature()&lt;br /&gt;
source.Destroy()&lt;br /&gt;
output.Destroy()  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hivatkozások ==&lt;br /&gt;
&lt;br /&gt;
http://www.gdal.org/&lt;br /&gt;
&lt;br /&gt;
https://pcjericks.github.io/py-gdalogr-cookbook/&lt;br /&gt;
&lt;br /&gt;
http://www.osgeo.org/gdal_ogr&lt;br /&gt;
&lt;br /&gt;
http://geoexamples.com/&lt;br /&gt;
&lt;br /&gt;
http://www.digital-geography.com/create-and-edit-shapefiles-with-python-only/&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=234</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=234"/>
		<updated>2016-06-18T13:44:54Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: Henrietta átnevezte a(z) GDAL/OGR lapot a következő névre: GDAL/OGR használata Python nyelvben: Pontosítás&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==GDAL/OGR modul leírása==&lt;br /&gt;
&lt;br /&gt;
A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt OGR&lt;br /&gt;
könyvtárhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek az OGR funkciói: ez a Python OGR modul.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
===Támogatott adatformátumok===&lt;br /&gt;
&lt;br /&gt;
Az OGR könyvtár segítségével számos vektoros formátumot (állománytípust vagy egyéb&lt;br /&gt;
&lt;br /&gt;
adatforrást) tudunk kezelni, például:&lt;br /&gt;
&lt;br /&gt;
*  ESRI shapefile&lt;br /&gt;
&lt;br /&gt;
*  personal geodatabase (térinformatikai adatokat tároló Microsoft Access adatbázis)&lt;br /&gt;
&lt;br /&gt;
*  ArcSDE adatbázis&lt;br /&gt;
&lt;br /&gt;
*  MapInfo formátum&lt;br /&gt;
&lt;br /&gt;
*  GRASS formátum&lt;br /&gt;
&lt;br /&gt;
*  Bentley Systems MicroStation formátum&lt;br /&gt;
&lt;br /&gt;
*  TIGER/Line&lt;br /&gt;
&lt;br /&gt;
*  SDTS&lt;br /&gt;
&lt;br /&gt;
*  GML&lt;br /&gt;
&lt;br /&gt;
*  KML&lt;br /&gt;
&lt;br /&gt;
*  MySQL, PostgreSQL, MariaDB, stb&lt;br /&gt;
&lt;br /&gt;
*  Oracle Spatial&lt;br /&gt;
&lt;br /&gt;
*  Informix&lt;br /&gt;
&lt;br /&gt;
*  ODBC&lt;br /&gt;
&lt;br /&gt;
===Hozzáférés a filehoz===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az OGR könyvtár úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használ. A következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése===&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;layer = datasource.GetLayer()&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
===Attribútumok===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Népsűrűség ábrázolása térképen===&lt;br /&gt;
&lt;br /&gt;
Az alábbi kód, egy meglévő shapefile rétegre egy másikat generál, egy megadott atríbútum táblából, aminek segítségével szemlélteti, hogy az adott területeken mekkora a népsűrűség. Ehhez pontokat generál, egy pont 100 embert reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
import random&lt;br /&gt;
# shapefile megnyitasa ogr reteg letrehozasa elso feature lekerese&lt;br /&gt;
source = ogr.Open(&amp;quot;GIS_CensusTract_poly.shp&amp;quot;)&lt;br /&gt;
county = source.GetLayer(&amp;quot;GIS_CensusTract_poly&amp;quot;)&lt;br /&gt;
feature = county.GetNextFeature()&lt;br /&gt;
# kimeneti shapefile es reteg letrehozasa&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
output = driver.CreateDataSource(&amp;quot;PopDensity.shp&amp;quot;)&lt;br /&gt;
dots = output.CreateLayer(&amp;quot;PopDensity&amp;quot;, geom_type=ogr.wkbPoint)&lt;br /&gt;
while feature is not None:&lt;br /&gt;
  field_index = feature.GetFieldIndex(&amp;quot;POPULAT11&amp;quot;)&lt;br /&gt;
  population = int(feature.GetField(field_index))&lt;br /&gt;
  # 1 pont szaz embert reprezental &lt;br /&gt;
  density = population / 100&lt;br /&gt;
  count = 0   &lt;br /&gt;
  while count &amp;lt; density:&lt;br /&gt;
    geometry = feature.GetGeometryRef()&lt;br /&gt;
    minx, maxx, miny, maxy = geometry.GetEnvelope()&lt;br /&gt;
    x = random.uniform(minx,maxx)&lt;br /&gt;
    y = random.uniform(miny,maxy)&lt;br /&gt;
    f = ogr.Feature(feature_def=dots.GetLayerDefn())&lt;br /&gt;
    wkt = &amp;quot;POINT(%f %f)&amp;quot; % (x,y)&lt;br /&gt;
    point = ogr.CreateGeometryFromWkt(wkt)&lt;br /&gt;
    # Csak akkor hasznaljuk a pontot, ha benne van az adott alakzatban&lt;br /&gt;
    if feature.GetGeometryRef().Contains(point):&lt;br /&gt;
        f.SetGeometryDirectly(point)&lt;br /&gt;
        dots.CreateFeature(f)&lt;br /&gt;
        count += 1&lt;br /&gt;
    # objektum eltorlese&lt;br /&gt;
    f.Destroy()&lt;br /&gt;
  feature = county.GetNextFeature()&lt;br /&gt;
source.Destroy()&lt;br /&gt;
output.Destroy()  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hivatkozások ==&lt;br /&gt;
&lt;br /&gt;
http://www.gdal.org/&lt;br /&gt;
&lt;br /&gt;
https://pcjericks.github.io/py-gdalogr-cookbook/&lt;br /&gt;
&lt;br /&gt;
http://www.osgeo.org/gdal_ogr&lt;br /&gt;
&lt;br /&gt;
http://geoexamples.com/&lt;br /&gt;
&lt;br /&gt;
http://www.digital-geography.com/create-and-edit-shapefiles-with-python-only/&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR&amp;diff=235</id>
		<title>GDAL/OGR</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR&amp;diff=235"/>
		<updated>2016-06-18T13:44:54Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: Henrietta átnevezte a(z) GDAL/OGR lapot a következő névre: GDAL/OGR használata Python nyelvben: Pontosítás&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#ÁTIRÁNYÍTÁS [[GDAL/OGR használata Python nyelvben]]&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=187</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=187"/>
		<updated>2016-05-15T20:16:30Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: Hivatkozasok&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==GDAL/OGR modul leírása==&lt;br /&gt;
&lt;br /&gt;
A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt OGR&lt;br /&gt;
könyvtárhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek az OGR funkciói: ez a Python OGR modul.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
===Támogatott adatformátumok===&lt;br /&gt;
&lt;br /&gt;
Az OGR könyvtár segítségével számos vektoros formátumot (állománytípust vagy egyéb&lt;br /&gt;
&lt;br /&gt;
adatforrást) tudunk kezelni, például:&lt;br /&gt;
&lt;br /&gt;
*  ESRI shapefile&lt;br /&gt;
&lt;br /&gt;
*  personal geodatabase (térinformatikai adatokat tároló Microsoft Access adatbázis)&lt;br /&gt;
&lt;br /&gt;
*  ArcSDE adatbázis&lt;br /&gt;
&lt;br /&gt;
*  MapInfo formátum&lt;br /&gt;
&lt;br /&gt;
*  GRASS formátum&lt;br /&gt;
&lt;br /&gt;
*  Bentley Systems MicroStation formátum&lt;br /&gt;
&lt;br /&gt;
*  TIGER/Line&lt;br /&gt;
&lt;br /&gt;
*  SDTS&lt;br /&gt;
&lt;br /&gt;
*  GML&lt;br /&gt;
&lt;br /&gt;
*  KML&lt;br /&gt;
&lt;br /&gt;
*  MySQL, PostgreSQL, MariaDB, stb&lt;br /&gt;
&lt;br /&gt;
*  Oracle Spatial&lt;br /&gt;
&lt;br /&gt;
*  Informix&lt;br /&gt;
&lt;br /&gt;
*  ODBC&lt;br /&gt;
&lt;br /&gt;
===Hozzáférés a filehoz===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az OGR könyvtár úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használ. A következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése===&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;layer = datasource.GetLayer()&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
===Attribútumok===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Népsűrűség ábrázolása térképen===&lt;br /&gt;
&lt;br /&gt;
Az alábbi kód, egy meglévő shapefile rétegre egy másikat generál, egy megadott atríbútum táblából, aminek segítségével szemlélteti, hogy az adott területeken mekkora a népsűrűség. Ehhez pontokat generál, egy pont 100 embert reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
import random&lt;br /&gt;
# shapefile megnyitasa ogr reteg letrehozasa elso feature lekerese&lt;br /&gt;
source = ogr.Open(&amp;quot;GIS_CensusTract_poly.shp&amp;quot;)&lt;br /&gt;
county = source.GetLayer(&amp;quot;GIS_CensusTract_poly&amp;quot;)&lt;br /&gt;
feature = county.GetNextFeature()&lt;br /&gt;
# kimeneti shapefile es reteg letrehozasa&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
output = driver.CreateDataSource(&amp;quot;PopDensity.shp&amp;quot;)&lt;br /&gt;
dots = output.CreateLayer(&amp;quot;PopDensity&amp;quot;, geom_type=ogr.wkbPoint)&lt;br /&gt;
while feature is not None:&lt;br /&gt;
  field_index = feature.GetFieldIndex(&amp;quot;POPULAT11&amp;quot;)&lt;br /&gt;
  population = int(feature.GetField(field_index))&lt;br /&gt;
  # 1 pont szaz embert reprezental &lt;br /&gt;
  density = population / 100&lt;br /&gt;
  count = 0   &lt;br /&gt;
  while count &amp;lt; density:&lt;br /&gt;
    geometry = feature.GetGeometryRef()&lt;br /&gt;
    minx, maxx, miny, maxy = geometry.GetEnvelope()&lt;br /&gt;
    x = random.uniform(minx,maxx)&lt;br /&gt;
    y = random.uniform(miny,maxy)&lt;br /&gt;
    f = ogr.Feature(feature_def=dots.GetLayerDefn())&lt;br /&gt;
    wkt = &amp;quot;POINT(%f %f)&amp;quot; % (x,y)&lt;br /&gt;
    point = ogr.CreateGeometryFromWkt(wkt)&lt;br /&gt;
    # Csak akkor hasznaljuk a pontot, ha benne van az adott alakzatban&lt;br /&gt;
    if feature.GetGeometryRef().Contains(point):&lt;br /&gt;
        f.SetGeometryDirectly(point)&lt;br /&gt;
        dots.CreateFeature(f)&lt;br /&gt;
        count += 1&lt;br /&gt;
    # objektum eltorlese&lt;br /&gt;
    f.Destroy()&lt;br /&gt;
  feature = county.GetNextFeature()&lt;br /&gt;
source.Destroy()&lt;br /&gt;
output.Destroy()  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hivatkozások ==&lt;br /&gt;
&lt;br /&gt;
http://www.gdal.org/&lt;br /&gt;
&lt;br /&gt;
https://pcjericks.github.io/py-gdalogr-cookbook/&lt;br /&gt;
&lt;br /&gt;
http://www.osgeo.org/gdal_ogr&lt;br /&gt;
&lt;br /&gt;
http://geoexamples.com/&lt;br /&gt;
&lt;br /&gt;
http://www.digital-geography.com/create-and-edit-shapefiles-with-python-only/&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=186</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=186"/>
		<updated>2016-05-15T19:45:14Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: /* Népsűrűség ábrázolása térképen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==GDAL/OGR modul leírása==&lt;br /&gt;
&lt;br /&gt;
A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt OGR&lt;br /&gt;
könyvtárhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek az OGR funkciói: ez a Python OGR modul.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
===Támogatott adatformátumok===&lt;br /&gt;
&lt;br /&gt;
Az OGR könyvtár segítségével számos vektoros formátumot (állománytípust vagy egyéb&lt;br /&gt;
&lt;br /&gt;
adatforrást) tudunk kezelni, például:&lt;br /&gt;
&lt;br /&gt;
*  ESRI shapefile&lt;br /&gt;
&lt;br /&gt;
*  personal geodatabase (térinformatikai adatokat tároló Microsoft Access adatbázis)&lt;br /&gt;
&lt;br /&gt;
*  ArcSDE adatbázis&lt;br /&gt;
&lt;br /&gt;
*  MapInfo formátum&lt;br /&gt;
&lt;br /&gt;
*  GRASS formátum&lt;br /&gt;
&lt;br /&gt;
*  Bentley Systems MicroStation formátum&lt;br /&gt;
&lt;br /&gt;
*  TIGER/Line&lt;br /&gt;
&lt;br /&gt;
*  SDTS&lt;br /&gt;
&lt;br /&gt;
*  GML&lt;br /&gt;
&lt;br /&gt;
*  KML&lt;br /&gt;
&lt;br /&gt;
*  MySQL, PostgreSQL, MariaDB, stb&lt;br /&gt;
&lt;br /&gt;
*  Oracle Spatial&lt;br /&gt;
&lt;br /&gt;
*  Informix&lt;br /&gt;
&lt;br /&gt;
*  ODBC&lt;br /&gt;
&lt;br /&gt;
===Hozzáférés a filehoz===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az OGR könyvtár úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használ. A következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése===&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;layer = datasource.GetLayer()&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
===Attribútumok===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Népsűrűség ábrázolása térképen===&lt;br /&gt;
&lt;br /&gt;
Az alábbi kód, egy meglévő shapefile rétegre egy másikat generál, egy megadott atríbútum táblából, aminek segítségével szemlélteti, hogy az adott területeken mekkora a népsűrűség. Ehhez pontokat generál, egy pont 100 embert reprezentál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
import random&lt;br /&gt;
# shapefile megnyitasa ogr reteg letrehozasa elso feature lekerese&lt;br /&gt;
source = ogr.Open(&amp;quot;GIS_CensusTract_poly.shp&amp;quot;)&lt;br /&gt;
county = source.GetLayer(&amp;quot;GIS_CensusTract_poly&amp;quot;)&lt;br /&gt;
feature = county.GetNextFeature()&lt;br /&gt;
# kimeneti shapefile es reteg letrehozasa&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
output = driver.CreateDataSource(&amp;quot;PopDensity.shp&amp;quot;)&lt;br /&gt;
dots = output.CreateLayer(&amp;quot;PopDensity&amp;quot;, geom_type=ogr.wkbPoint)&lt;br /&gt;
while feature is not None:&lt;br /&gt;
  field_index = feature.GetFieldIndex(&amp;quot;POPULAT11&amp;quot;)&lt;br /&gt;
  population = int(feature.GetField(field_index))&lt;br /&gt;
  # 1 pont szaz embert reprezental &lt;br /&gt;
  density = population / 100&lt;br /&gt;
  count = 0   &lt;br /&gt;
  while count &amp;lt; density:&lt;br /&gt;
    geometry = feature.GetGeometryRef()&lt;br /&gt;
    minx, maxx, miny, maxy = geometry.GetEnvelope()&lt;br /&gt;
    x = random.uniform(minx,maxx)&lt;br /&gt;
    y = random.uniform(miny,maxy)&lt;br /&gt;
    f = ogr.Feature(feature_def=dots.GetLayerDefn())&lt;br /&gt;
    wkt = &amp;quot;POINT(%f %f)&amp;quot; % (x,y)&lt;br /&gt;
    point = ogr.CreateGeometryFromWkt(wkt)&lt;br /&gt;
    # Csak akkor hasznaljuk a pontot, ha benne van az adott alakzatban&lt;br /&gt;
    if feature.GetGeometryRef().Contains(point):&lt;br /&gt;
        f.SetGeometryDirectly(point)&lt;br /&gt;
        dots.CreateFeature(f)&lt;br /&gt;
        count += 1&lt;br /&gt;
    # objektum eltorlese&lt;br /&gt;
    f.Destroy()&lt;br /&gt;
  feature = county.GetNextFeature()&lt;br /&gt;
source.Destroy()&lt;br /&gt;
output.Destroy()  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=185</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=185"/>
		<updated>2016-05-15T18:29:20Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: Új példaprogram hozzáadása&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==GDAL/OGR modul leírása==&lt;br /&gt;
&lt;br /&gt;
A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt OGR&lt;br /&gt;
könyvtárhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek az OGR funkciói: ez a Python OGR modul.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
===Támogatott adatformátumok===&lt;br /&gt;
&lt;br /&gt;
Az OGR könyvtár segítségével számos vektoros formátumot (állománytípust vagy egyéb&lt;br /&gt;
&lt;br /&gt;
adatforrást) tudunk kezelni, például:&lt;br /&gt;
&lt;br /&gt;
*  ESRI shapefile&lt;br /&gt;
&lt;br /&gt;
*  personal geodatabase (térinformatikai adatokat tároló Microsoft Access adatbázis)&lt;br /&gt;
&lt;br /&gt;
*  ArcSDE adatbázis&lt;br /&gt;
&lt;br /&gt;
*  MapInfo formátum&lt;br /&gt;
&lt;br /&gt;
*  GRASS formátum&lt;br /&gt;
&lt;br /&gt;
*  Bentley Systems MicroStation formátum&lt;br /&gt;
&lt;br /&gt;
*  TIGER/Line&lt;br /&gt;
&lt;br /&gt;
*  SDTS&lt;br /&gt;
&lt;br /&gt;
*  GML&lt;br /&gt;
&lt;br /&gt;
*  KML&lt;br /&gt;
&lt;br /&gt;
*  MySQL, PostgreSQL, MariaDB, stb&lt;br /&gt;
&lt;br /&gt;
*  Oracle Spatial&lt;br /&gt;
&lt;br /&gt;
*  Informix&lt;br /&gt;
&lt;br /&gt;
*  ODBC&lt;br /&gt;
&lt;br /&gt;
===Hozzáférés a filehoz===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az OGR könyvtár úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használ. A következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése===&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;layer = datasource.GetLayer()&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
===Attribútumok===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Népsűrűség ábrázolása térképen===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
import random&lt;br /&gt;
# shapefile megnyitasa ogr reteg letrehozasa elso feature lekerese&lt;br /&gt;
source = ogr.Open(&amp;quot;GIS_CensusTract_poly.shp&amp;quot;)&lt;br /&gt;
county = source.GetLayer(&amp;quot;GIS_CensusTract_poly&amp;quot;)&lt;br /&gt;
feature = county.GetNextFeature()&lt;br /&gt;
# kimeneti shapefile es reteg letrehozasa&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
output = driver.CreateDataSource(&amp;quot;PopDensity.shp&amp;quot;)&lt;br /&gt;
dots = output.CreateLayer(&amp;quot;PopDensity&amp;quot;, geom_type=ogr.wkbPoint)&lt;br /&gt;
while feature is not None:&lt;br /&gt;
  field_index = feature.GetFieldIndex(&amp;quot;POPULAT11&amp;quot;)&lt;br /&gt;
  population = int(feature.GetField(field_index))&lt;br /&gt;
  # 1 pont szaz embert reprezental &lt;br /&gt;
  density = population / 100&lt;br /&gt;
  count = 0   &lt;br /&gt;
  while count &amp;lt; density:&lt;br /&gt;
    geometry = feature.GetGeometryRef()&lt;br /&gt;
    minx, maxx, miny, maxy = geometry.GetEnvelope()&lt;br /&gt;
    x = random.uniform(minx,maxx)&lt;br /&gt;
    y = random.uniform(miny,maxy)&lt;br /&gt;
    f = ogr.Feature(feature_def=dots.GetLayerDefn())&lt;br /&gt;
    wkt = &amp;quot;POINT(%f %f)&amp;quot; % (x,y)&lt;br /&gt;
    point = ogr.CreateGeometryFromWkt(wkt)&lt;br /&gt;
    # Csak akkor hasznaljuk a pontot, ha benne van az adott alakzatban&lt;br /&gt;
    if feature.GetGeometryRef().Contains(point):&lt;br /&gt;
        f.SetGeometryDirectly(point)&lt;br /&gt;
        dots.CreateFeature(f)&lt;br /&gt;
        count += 1&lt;br /&gt;
    # objektum eltorlese&lt;br /&gt;
    f.Destroy()&lt;br /&gt;
  feature = county.GetNextFeature()&lt;br /&gt;
source.Destroy()&lt;br /&gt;
output.Destroy()  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=184</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=184"/>
		<updated>2016-05-15T18:20:51Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: Python példakódok kijavítása&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==GDAL/OGR modul leírása==&lt;br /&gt;
&lt;br /&gt;
A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt OGR&lt;br /&gt;
könyvtárhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek az OGR funkciói: ez a Python OGR modul.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
===Támogatott adatformátumok===&lt;br /&gt;
&lt;br /&gt;
Az OGR könyvtár segítségével számos vektoros formátumot (állománytípust vagy egyéb&lt;br /&gt;
&lt;br /&gt;
adatforrást) tudunk kezelni, például:&lt;br /&gt;
&lt;br /&gt;
*  ESRI shapefile&lt;br /&gt;
&lt;br /&gt;
*  personal geodatabase (térinformatikai adatokat tároló Microsoft Access adatbázis)&lt;br /&gt;
&lt;br /&gt;
*  ArcSDE adatbázis&lt;br /&gt;
&lt;br /&gt;
*  MapInfo formátum&lt;br /&gt;
&lt;br /&gt;
*  GRASS formátum&lt;br /&gt;
&lt;br /&gt;
*  Bentley Systems MicroStation formátum&lt;br /&gt;
&lt;br /&gt;
*  TIGER/Line&lt;br /&gt;
&lt;br /&gt;
*  SDTS&lt;br /&gt;
&lt;br /&gt;
*  GML&lt;br /&gt;
&lt;br /&gt;
*  KML&lt;br /&gt;
&lt;br /&gt;
*  MySQL, PostgreSQL, MariaDB, stb&lt;br /&gt;
&lt;br /&gt;
*  Oracle Spatial&lt;br /&gt;
&lt;br /&gt;
*  Informix&lt;br /&gt;
&lt;br /&gt;
*  ODBC&lt;br /&gt;
&lt;br /&gt;
===Hozzáférés a filehoz===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az OGR könyvtár úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használ. A következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése===&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;layer = datasource.GetLayer()&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
===Attribútumok===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=183</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=183"/>
		<updated>2016-05-13T19:09:35Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==GDAL/OGR modul leírása==&lt;br /&gt;
&lt;br /&gt;
A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt OGR&lt;br /&gt;
könyvtárhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
legyenek az OGR funkciói: ez a Python OGR modul.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
===Támogatott adatformátumok===&lt;br /&gt;
&lt;br /&gt;
Az OGR könyvtár segítségével számos vektoros formátumot (állománytípust vagy egyéb&lt;br /&gt;
&lt;br /&gt;
adatforrást) tudunk kezelni, például:&lt;br /&gt;
&lt;br /&gt;
*  ESRI shapefile&lt;br /&gt;
&lt;br /&gt;
*  personal geodatabase (térinformatikai adatokat tároló Microsoft Access adatbázis)&lt;br /&gt;
&lt;br /&gt;
*  ArcSDE adatbázis&lt;br /&gt;
&lt;br /&gt;
*  MapInfo formátum&lt;br /&gt;
&lt;br /&gt;
*  GRASS formátum&lt;br /&gt;
&lt;br /&gt;
*  Bentley Systems MicroStation formátum&lt;br /&gt;
&lt;br /&gt;
*  TIGER/Line&lt;br /&gt;
&lt;br /&gt;
*  SDTS&lt;br /&gt;
&lt;br /&gt;
*  GML&lt;br /&gt;
&lt;br /&gt;
*  KML&lt;br /&gt;
&lt;br /&gt;
*  MySQL, PostgreSQL, MariaDB, stb&lt;br /&gt;
&lt;br /&gt;
*  Oracle Spatial&lt;br /&gt;
&lt;br /&gt;
*  Informix&lt;br /&gt;
&lt;br /&gt;
*  ODBC&lt;br /&gt;
&lt;br /&gt;
===Hozzáférés a filehoz===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az OGR könyvtár úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használ. A következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése===&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;layer = datasource.GetLayer()&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
===Attribútumok===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=182</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=182"/>
		<updated>2016-05-13T19:08:10Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==GDAL/OGR modul leírása==&lt;br /&gt;
&lt;br /&gt;
A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt OGR&lt;br /&gt;
&lt;br /&gt;
könyvtárhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
&lt;br /&gt;
legyenek az OGR funkciói: ez a Python OGR modul.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
===Támogatott adatformátumok===&lt;br /&gt;
&lt;br /&gt;
Az OGR könyvtár segítségével számos vektoros formátumot (állománytípust vagy egyéb&lt;br /&gt;
&lt;br /&gt;
adatforrást) tudunk kezelni, például:&lt;br /&gt;
&lt;br /&gt;
*  ESRI shapefile&lt;br /&gt;
&lt;br /&gt;
*  personal geodatabase (térinformatikai adatokat tároló Microsoft Access adatbázis)&lt;br /&gt;
&lt;br /&gt;
*  ArcSDE adatbázis&lt;br /&gt;
&lt;br /&gt;
*  MapInfo formátum&lt;br /&gt;
&lt;br /&gt;
*  GRASS formátum&lt;br /&gt;
&lt;br /&gt;
*  Bentley Systems MicroStation formátum&lt;br /&gt;
&lt;br /&gt;
*  TIGER/Line&lt;br /&gt;
&lt;br /&gt;
*  SDTS&lt;br /&gt;
&lt;br /&gt;
*  GML&lt;br /&gt;
&lt;br /&gt;
*  KML&lt;br /&gt;
&lt;br /&gt;
*  MySQL, PostgreSQL, MariaDB, stb&lt;br /&gt;
&lt;br /&gt;
*  Oracle Spatial&lt;br /&gt;
&lt;br /&gt;
*  Informix&lt;br /&gt;
&lt;br /&gt;
*  ODBC&lt;br /&gt;
&lt;br /&gt;
===Hozzáférés a filehoz===&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az OGR könyvtár úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használ. A következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
===Térképészeti adat kinyerése===&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;layer = datasource.GetLayer()&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
===Attribútumok===&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=181</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=181"/>
		<updated>2016-05-13T19:04:26Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==GDAL/OGR modul leírása==&lt;br /&gt;
&lt;br /&gt;
A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt OGR&lt;br /&gt;
&lt;br /&gt;
könyvtárhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
&lt;br /&gt;
legyenek az OGR funkciói: ez a Python OGR modul.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Támogatott adatformátumok&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OGR könyvtár segítségével számos vektoros formátumot (állománytípust vagy egyéb&lt;br /&gt;
&lt;br /&gt;
adatforrást) tudunk kezelni, például:&lt;br /&gt;
&lt;br /&gt;
*  ESRI shapefile&lt;br /&gt;
&lt;br /&gt;
*  personal geodatabase (térinformatikai adatokat tároló Microsoft Access adatbázis)&lt;br /&gt;
&lt;br /&gt;
*  ArcSDE adatbázis&lt;br /&gt;
&lt;br /&gt;
*  MapInfo formátum&lt;br /&gt;
&lt;br /&gt;
*  GRASS formátum&lt;br /&gt;
&lt;br /&gt;
*  Bentley Systems MicroStation formátum&lt;br /&gt;
&lt;br /&gt;
*  TIGER/Line&lt;br /&gt;
&lt;br /&gt;
*  SDTS&lt;br /&gt;
&lt;br /&gt;
*  GML&lt;br /&gt;
&lt;br /&gt;
*  KML&lt;br /&gt;
&lt;br /&gt;
*  MySQL, PostgreSQL, MariaDB, stb&lt;br /&gt;
&lt;br /&gt;
*  Oracle Spatial&lt;br /&gt;
&lt;br /&gt;
*  Informix&lt;br /&gt;
&lt;br /&gt;
*  ODBC&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hozzáférés a filehoz&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az OGR könyvtár úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használ. A következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Térképészeti adat kinyerése&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;layer = datasource.GetLayer()&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Attribútumok&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=180</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=180"/>
		<updated>2016-05-13T19:00:59Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: /* Példaprogramok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==GDAL/OGR modul leírása==&lt;br /&gt;
&lt;br /&gt;
A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt OGR&lt;br /&gt;
&lt;br /&gt;
könyvtárhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
&lt;br /&gt;
legyenek az OGR funkciói: ez a Python OGR modul.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Támogatott adatformátumok&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OGR könyvtár segítségével számos vektoros formátumot (állománytípust vagy egyéb&lt;br /&gt;
&lt;br /&gt;
adatforrást) tudunk kezelni, például:&lt;br /&gt;
&lt;br /&gt;
*  ESRI shapefile&lt;br /&gt;
&lt;br /&gt;
*  personal geodatabase (térinformatikai adatokat tároló Microsoft Access adatbázis)&lt;br /&gt;
&lt;br /&gt;
*  ArcSDE adatbázis&lt;br /&gt;
&lt;br /&gt;
*  MapInfo formátum&lt;br /&gt;
&lt;br /&gt;
*  GRASS formátum&lt;br /&gt;
&lt;br /&gt;
*  Bentley Systems MicroStation formátum&lt;br /&gt;
&lt;br /&gt;
*  TIGER/Line&lt;br /&gt;
&lt;br /&gt;
*  SDTS&lt;br /&gt;
&lt;br /&gt;
*  GML&lt;br /&gt;
&lt;br /&gt;
*  KML&lt;br /&gt;
&lt;br /&gt;
*  MySQL, PostgreSQL, MariaDB, stb&lt;br /&gt;
&lt;br /&gt;
*  Oracle Spatial&lt;br /&gt;
&lt;br /&gt;
*  Informix&lt;br /&gt;
&lt;br /&gt;
*  ODBC&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hozzáférés a filehoz&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az OGR könyvtár úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használ. A következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Térképészeti adat kinyerése&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
layer = datasource.GetLayer()&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Attribútumok&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;br /&gt;
===Shape file geometriájának egyszerűsítése===&lt;br /&gt;
&lt;br /&gt;
A következő Python kód egy Shape file geometriáját egyszerűsíti, adott toleranciával. A fontosabb&lt;br /&gt;
sorokhoz magyarázatot fűztünk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# ­*­ coding: utf­8 ­*­&lt;br /&gt;
&lt;br /&gt;
import os, sys&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
# infile ­ bemeneti állomány neve&lt;br /&gt;
# outfile ­ kimeneti állomány neve&lt;br /&gt;
# tolerance ­ a egyszerűsítés paramétere&lt;br /&gt;
&lt;br /&gt;
def simplify(infile, outfile, tolerance):&lt;br /&gt;
  # az ESRI Shapefile meghajtó&lt;br /&gt;
  driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
  # olvasásra nyitjuk meg a bemeneti állományt&lt;br /&gt;
  infile = driver.Open(infile,0)&lt;br /&gt;
  if infile is None:&lt;br /&gt;
    print &amp;#039;Nem tudom megnyitni a(z) &amp;#039;, infile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # a bemeneti állomány adatai: layer, feature, geometry&lt;br /&gt;
  inputLayer = infile.GetLayer()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  geom = inputFeature.GetGeometryRef()&lt;br /&gt;
  geomType = geom.GetGeometryType()&lt;br /&gt;
&lt;br /&gt;
  # a kimeneti állomány létrehozása&lt;br /&gt;
  if os.path.exists(outfile):&lt;br /&gt;
    os.remove(outfile)&lt;br /&gt;
  try:&lt;br /&gt;
    output = driver.CreateDataSource(outfile)&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;#039;Nem tudom létrehozni a(z)&amp;#039;, outfile, &amp;#039; nevű állományt!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
  # réteg létrehozása a kimeneten&lt;br /&gt;
  outputLayer = output.CreateLayer(&amp;#039;Tolerance&amp;#039;,geom_type=geomType,srs=inputLayer.GetSpatialRef())&lt;br /&gt;
  if outputLayer is None:&lt;br /&gt;
    print &amp;#039;Nem tudom lérehozni a megfelelő layer­t a kimeneti állományban!&amp;#039;&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
  outputLayerDef = outputLayer.GetLayerDefn()&lt;br /&gt;
  featureID = 0&lt;br /&gt;
&lt;br /&gt;
# végigmegyünk az összes elemen&lt;br /&gt;
while inputFeature:&lt;br /&gt;
  # az eredeti geometria&lt;br /&gt;
  geometry = inputFeature.GetGeometryRef()&lt;br /&gt;
  # az egyszerűsített geometria&lt;br /&gt;
  simplifiedGeom = geometry.Simplify(tolerance)&lt;br /&gt;
  # megpróbálunk létrehozni egy új feature­t az egyszerűsített geometriával&lt;br /&gt;
  try:&lt;br /&gt;
    newFeature = ogr.Feature(outputLayerDef)&lt;br /&gt;
    newFeature.SetGeometry(simplifiedGeom)&lt;br /&gt;
    newFeature.SetFID(featureID)&lt;br /&gt;
    outputLayer.CreateFeature(newFeature)&lt;br /&gt;
&lt;br /&gt;
  except:&lt;br /&gt;
    print &amp;quot;Nem tudtam létrehozni az egyszerűsített geomatriát!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  newFeature.Destroy()&lt;br /&gt;
  inputFeature.Destroy()&lt;br /&gt;
  inputFeature = inputLayer.GetNextFeature()&lt;br /&gt;
  featureID += 1&lt;br /&gt;
  infile.Destroy()&lt;br /&gt;
  output.Destroy()&lt;br /&gt;
  print &amp;quot;Az egyszerűsítést sikeresen végrehajtottam&amp;quot;&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
# a parancssorban átadott paraméterek&lt;br /&gt;
if (len(sys.argv) &amp;lt; 4):&lt;br /&gt;
  print (&amp;#039;Használat: python simplify.py &amp;lt;bemenet&amp;gt; &amp;lt;kimenet&amp;gt; &amp;lt;tolerancia&amp;gt;&amp;#039;)&lt;br /&gt;
  sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
# az egyszerűsítő függvény meghívása&lt;br /&gt;
simplify(sys.argv[1], sys.argv[2], float(sys.argv[3]))&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=179</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=179"/>
		<updated>2016-05-13T18:38:02Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: /* Használat */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==GDAL/OGR modul leírása==&lt;br /&gt;
&lt;br /&gt;
A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt OGR&lt;br /&gt;
&lt;br /&gt;
könyvtárhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
&lt;br /&gt;
legyenek az OGR funkciói: ez a Python OGR modul.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Támogatott adatformátumok&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OGR könyvtár segítségével számos vektoros formátumot (állománytípust vagy egyéb&lt;br /&gt;
&lt;br /&gt;
adatforrást) tudunk kezelni, például:&lt;br /&gt;
&lt;br /&gt;
*  ESRI shapefile&lt;br /&gt;
&lt;br /&gt;
*  personal geodatabase (térinformatikai adatokat tároló Microsoft Access adatbázis)&lt;br /&gt;
&lt;br /&gt;
*  ArcSDE adatbázis&lt;br /&gt;
&lt;br /&gt;
*  MapInfo formátum&lt;br /&gt;
&lt;br /&gt;
*  GRASS formátum&lt;br /&gt;
&lt;br /&gt;
*  Bentley Systems MicroStation formátum&lt;br /&gt;
&lt;br /&gt;
*  TIGER/Line&lt;br /&gt;
&lt;br /&gt;
*  SDTS&lt;br /&gt;
&lt;br /&gt;
*  GML&lt;br /&gt;
&lt;br /&gt;
*  KML&lt;br /&gt;
&lt;br /&gt;
*  MySQL, PostgreSQL, MariaDB, stb&lt;br /&gt;
&lt;br /&gt;
*  Oracle Spatial&lt;br /&gt;
&lt;br /&gt;
*  Informix&lt;br /&gt;
&lt;br /&gt;
*  ODBC&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hozzáférés a filehoz&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az OGR könyvtár úgynevezett&lt;br /&gt;
meghajtókat (vagy driver­eket) használ. A következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
milyen driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
  driver = ogr.GetDriver(i)&lt;br /&gt;
  driverName = driver.GetName()&lt;br /&gt;
  if not driverName in driverList:&lt;br /&gt;
    formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
  print i&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A kiírt nevek alapján azonosíthatjuk a megfelelő drivert. A Shape fájl formátumot például az&lt;br /&gt;
„ESRI Shapefile” nevű meghajtóval kezelhetjük. A megfelelő driver név szerint is elérhető (ha&lt;br /&gt;
nincs telepíve az adott nevű driver, akkor a GetDriverByName függvény None értéket térít vissza).&lt;br /&gt;
A Shape fájlokat kezelő meghajtót tehát a következő függvényhívással érhetjük el:&lt;br /&gt;
driver = ogr.GetDriverByName(&amp;#039;ESRI Shapefile&amp;#039;)&lt;br /&gt;
Az állományt ezután a meghatón keresztül nyitjuk meg az Open függvény segítségével, aminek&lt;br /&gt;
első paramétere az állomány neve (teljes elérési útvonal), a második pedig egy egész szám, aminek&lt;br /&gt;
értéke 0 vagy 1 lehet. A második paraméter 0, ha az állományt csak olvasásra nyitjuk meg, az érték&lt;br /&gt;
1 ha írni is szeretnénk bele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
file = driver.Open(filename, 0)&lt;br /&gt;
if file is None:&lt;br /&gt;
  print (&amp;#039;Nem tudtam megnyitni a fájlt!&amp;#039;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amennyiben a meghajtó nem tudta megnyitni az állományt, akkor a None értéket adja vissza. Ez a&lt;br /&gt;
helyzet akkor fordulhat elő, ha a Shape fájl tartalma sérült vagy az shx vagy dbf fájl nem található.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Térképészeti adat kinyerése&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A következő lépés a Shape fájlban található réteghez (layer) valő hozzáférés. Ezt a funkciót a&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
GetLayer(index) függvény biztosítja. Shape fájlok esetében az index mindig 0 (vagy el is lehet&lt;br /&gt;
hagyni ezt a paramétert), az index csak olyan formátumok esetében hasznos, mint pl. a GML vagy&lt;br /&gt;
a TIGER. A következő sorral tehát a Shape fájl egyetlen rétegét szerezzük be:&lt;br /&gt;
layer = datasource.GetLayer()&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezután következik a rétegen található elemek (features) beolvasása. A feature­ek számát a layer&lt;br /&gt;
GetFeatureCount() függvényével kérhetjük le, és az egyes feature­ek a GetFeature(index)&lt;br /&gt;
függvénnyel érhetjük el. Vagy végig lehet menni az összes feature­en a következő kóddal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
feature = layer.GetNextFeature()&lt;br /&gt;
&lt;br /&gt;
while feature:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
  feature = layer.GetNextFeature()&lt;br /&gt;
  layer.ResetReading() #ha újra kell kezdeni a beolvasást&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Shape fájlunk csak egyetlen feature­t tartalmaz, ezért a GetNextFeauter() egyszeri meghívásával&lt;br /&gt;
megoldjuk a hozzáférést.&lt;br /&gt;
Az elem mértani objetkumát a GetGeometryRef() függvénnyel kérhetjük le, típusát pedig a&lt;br /&gt;
GetGeometryType() vagy GetGeometryName() függvénnyekkel ellenőrizhetjük le. A következő&lt;br /&gt;
sorokban például azt ellenőrizzük le, hogy a poligon vagy multipoligon típusú elemmel van­e&lt;br /&gt;
dolgunk:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
geometry = feature.GetGeometryRef()&lt;br /&gt;
if geometry.GetGeometryName() == &amp;#039;POLYGON&amp;#039; or geom.GetGeometryName() ==&amp;#039;MULTIPOLYGON&amp;#039;:&lt;br /&gt;
  # feldolgozás&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A típusokat az OGR konstansaival (pl. ogr.wkbPoint, ogr.wkbLineString, ogr.wkbPolygon,&lt;br /&gt;
ogr.wkbMultiPoint, ogr.wkbMultiLineString, ogr.wkbMultiPolygon, stb.) is azonosíthatjuk.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Attribútumok&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az attribútomokat a GetField() függvénnyel és annak variációival érhetjük el. Például:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
attr = feature.GetField(&amp;#039;id&amp;#039;)&lt;br /&gt;
attrstr = feature.GetFieldAsString(&amp;#039;id&amp;#039;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az attribútumok számát a GetFieldCount() függvénnyel kapjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Példaprogramok==&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=178</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=178"/>
		<updated>2016-05-13T18:11:28Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: /* Támogatott bemeneti adatformátumok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==GDAL/OGR modul leírása==&lt;br /&gt;
&lt;br /&gt;
A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt OGR&lt;br /&gt;
&lt;br /&gt;
könyvtárhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
&lt;br /&gt;
legyenek az OGR funkciói: ez a Python OGR modul.&lt;br /&gt;
&lt;br /&gt;
== Használat ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Támogatott adatformátumok&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az OGR könyvtár segítségével számos vektoros formátumot (állománytípust vagy egyéb&lt;br /&gt;
&lt;br /&gt;
adatforrást) tudunk kezelni, például:&lt;br /&gt;
&lt;br /&gt;
*  ESRI shapefile&lt;br /&gt;
&lt;br /&gt;
*  personal geodatabase (térinformatikai adatokat tároló Microsoft Access adatbázis)&lt;br /&gt;
&lt;br /&gt;
*  ArcSDE adatbázis&lt;br /&gt;
&lt;br /&gt;
*  MapInfo formátum&lt;br /&gt;
&lt;br /&gt;
*  GRASS formátum&lt;br /&gt;
&lt;br /&gt;
*  Bentley Systems MicroStation formátum&lt;br /&gt;
&lt;br /&gt;
*  TIGER/Line&lt;br /&gt;
&lt;br /&gt;
*  SDTS&lt;br /&gt;
&lt;br /&gt;
*  GML&lt;br /&gt;
&lt;br /&gt;
*  KML&lt;br /&gt;
&lt;br /&gt;
*  MySQL, PostgreSQL, MariaDB, stb&lt;br /&gt;
&lt;br /&gt;
*  Oracle Spatial&lt;br /&gt;
&lt;br /&gt;
*  Informix&lt;br /&gt;
&lt;br /&gt;
*  ODBC&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Adatok beolvasása&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A különböző fájltípusoknak és más adatforrásoknak a kezelésére az OGR könyvtár úgynevezett&lt;br /&gt;
&lt;br /&gt;
meghajtókat (vagy driver­eket) használ. A következő Python kóddal tudjuk megvizsgálni, hogy&lt;br /&gt;
&lt;br /&gt;
milyen driver­ek állnak rendelkezésünkre:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
from osgeo import ogr&lt;br /&gt;
&lt;br /&gt;
driverList = []&lt;br /&gt;
&lt;br /&gt;
for i in range(ogr.GetDriverCount()):&lt;br /&gt;
&lt;br /&gt;
driver = ogr.GetDriver(i)&lt;br /&gt;
&lt;br /&gt;
driverName = driver.GetName()&lt;br /&gt;
&lt;br /&gt;
if not driverName in driverList:&lt;br /&gt;
&lt;br /&gt;
formatsList.append(driverName)&lt;br /&gt;
&lt;br /&gt;
for i in formatsList:&lt;br /&gt;
&lt;br /&gt;
print i&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=177</id>
		<title>GDAL/OGR használata Python nyelvben</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=GDAL/OGR_haszn%C3%A1lata_Python_nyelvben&amp;diff=177"/>
		<updated>2016-05-13T17:51:57Z</updated>

		<summary type="html">&lt;p&gt;Henrietta: Új oldal, tartalma: „==GDAL/OGR modul leírása==  A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference  Implementation) könyvtárak számos eszközzel…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==GDAL/OGR modul leírása==&lt;br /&gt;
&lt;br /&gt;
A nyílt GDAL/OGR (Geospatial Data Abstraction Library, OpenGIS Simple Features Reference&lt;br /&gt;
&lt;br /&gt;
Implementation) könyvtárak számos eszközzel segítik a térképészeti adatok feldolgozását. A&lt;br /&gt;
&lt;br /&gt;
GDAL a raszteres, az OGR pedig a vektoros adatok kezeléséért felel. A C++ nyelven írt OGR&lt;br /&gt;
&lt;br /&gt;
könyvtárhoz úgynevezett Python kötéseket készítettek, hogy Python programokból elérhetők&lt;br /&gt;
&lt;br /&gt;
legyenek az OGR funkciói: ez a Python OGR modul.&lt;br /&gt;
&lt;br /&gt;
== Támogatott bemeneti adatformátumok ==&lt;/div&gt;</summary>
		<author><name>Henrietta</name></author>
		
	</entry>
</feed>