Programování s knihovnou OGR: Porovnání verzí

Z GeoWikiCZ
(→‎Python: ukazka)
m (Obsah stránky nahrazen textem „{{freegiswiki|OGR / Ukázka použití}}“)
 
(Není zobrazeno 17 mezilehlých verzí od stejného uživatele.)
Řádek 1: Řádek 1:
{{Upravit}}
{{freegiswiki|OGR / Ukázka použití}}
 
Tato stránka obsahuje ukázku zdrojového textu demonstračního programu využívající pro přístup k vektorovým datům knihovnu '''[[GDAL/OGR|OGR]]'''. Program je  inspirován skriptem z [[153GIS2 2009 - 10. cvičení#1|cvičení GIS2]].
 
__TOC__
== C++ ==
 
<source lang="cpp">
#include <iostream>
#include "ogrsf_frmts.h"
 
using std::cout;
using std::cerr;
using std::endl;
 
int main(int argc, char **argv)
{
    const char *filename;
   
    OGRDataSource  *poDS;
    OGRLayer      *poLayer;
    OGRFeatureDefn *poFDefn;
 
    if (argc != 2) {
cerr << "Pouziti: " << argv[0] << " shapefile" << endl;
return 1;
    }
   
    filename = argv[1];
   
    // registrovat dostupne OGR ovladace
    OGRRegisterAll();
 
    // otevrit ShapeFile pro cteni
    poDS = OGRSFDriverRegistrar::Open(filename, FALSE);
    if (poDS == NULL) {
        cerr << "Otevreni '" << filename << "' selhalo." << endl;
        return 1;
    }
   
    // nacist prvni OGR vrstvu (tj. Shapefile)
    poLayer = poDS->GetLayer(0);
    if (poLayer == NULL) {
        cerr << "Nelze nacist OGR vrstvu." << endl;
        return 1;
    }
 
    // ziskat informace o vrstve
    poFDefn = poLayer->GetLayerDefn();
 
    cout << "Detekovana OGR vrstva '" << poFDefn->GetName() << "'.\n\n";
 
    for(int iField = 0; iField < poFDefn->GetFieldCount(); iField++) {
// ziskat informace o atributovem sloupci
OGRFieldDefn *poFieldDefn = poFDefn->GetFieldDefn(iField);
cout << poFieldDefn->GetNameRef() << endl;
    }
 
    return 0;
}
</source>
 
== Python ==
 
<source lang="python">
import sys
import osgeo.ogr as ogr
 
def main():
    if len(sys.argv) != 2:
        print >> sys.stderr, "Pouziti: %s shapefile" % sys.argv[0]
        return 1
   
    filename = sys.argv[1]
 
    # otevrit ShapeFile pro cteni
    ds = ogr.Open(filename)
    if ds is None:
        print >> sys.stderr, "Otevreni '%s' selhalo." % filename
        return 1
 
    # nacist prvni OGR vrstvu (tj. Shapefile)
    lyr = ds.GetLayer(0)
    if lyr is None:
        print >> sys.stderr, "Nelze nacist OGR vrstvu."
   
    # ziskat informace o vrstve
    feat_defn = lyr.GetLayerDefn()
 
    print "Detekovana OGR vrstva '%s'.\n" % feat_defn.GetName()
 
    for i in range(feat_defn.GetFieldCount()):
        field_defn = feat_defn.GetFieldDefn(i)
        print field_defn.GetNameRef()
   
    return 0
 
if __name__ == "__main__":
    sys.exit(main())
</source>
 
== Související články ==
 
* [[153GIS2 2009 - 10. cvičení - GRASS GIS|Ukázka skriptů pro GRASS GIS]]
 
== Externí odkazy ==
 
* [http://gdal.osgeo.org/ogr/hierarchy.html OGR API]
* [http://gdal.osgeo.org/ogr/ogr_apitut.html OGR API Tutorial]
* [http://gdal.osgeo.org/ogr/ogr_arch.html OGR Architecture]
 
{{GFOSS}}
{{Programování}}
{{C++}}
{{Python}}

Aktuální verze z 9. 1. 2013, 15:11