Ejemplo n.º 1
0
def ogr_osm_8():

    if ogrtest.osm_drv is None:
        return 'skip'

    ds = ogr.Open( 'data/base-64.osm.pbf' )
    if ds is None:
        gdaltest.post_reason('fail')
        return 'fail'

    lyr = ds.GetLayerByName( 'points')
    lyr.SetAttributeFilter("osm_id = '4294967934'")
    feat = lyr.GetNextFeature()

    if feat.GetField('name') != 'Treetops' or \
       ogrtest.check_feature_geometry(feat, ogr.CreateGeometryFromWkt('POINT (-61.7964321 17.1498319)')) != 0:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    lyr = ds.GetLayerByName( 'multipolygons')
    feat = lyr.GetFeature(1113)

    if ogrtest.check_feature_geometry(feat, ogr.CreateGeometryFromWkt('MULTIPOLYGON (((-61.7780345 17.140634,-61.7777002 17.1406069,-61.7776854 17.1407739,-61.7779131 17.1407923,-61.7779158 17.1407624,-61.7780224 17.140771,-61.7780345 17.140634)))')) != 0:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    return 'success'
Ejemplo n.º 2
0
def test_ogr_segp1_lines():

    ds = ogr.Open('data/test.segp1')
    assert ds is not None, 'cannot open dataset'

    assert ds.GetLayerCount() == 2, 'bad layer count'

    lyr = ds.GetLayer(1)
    assert lyr.GetGeomType() == ogr.wkbLineString, 'bad layer geometry type'

    feat = lyr.GetNextFeature()

    if feat.GetField('LINENAME') != 'firstline':
        feat.DumpReadable()
        pytest.fail('did not get expected value for LINENAME')

    if ogrtest.check_feature_geometry(feat, 'LINESTRING (2 49,2.0 49.5)',
                                      max_error=0.0000001) != 0:
        feat.DumpReadable()
        pytest.fail('did not get expected first geom')

    feat = lyr.GetNextFeature()

    if feat.GetField('LINENAME') != 'secondline':
        feat.DumpReadable()
        pytest.fail('did not get expected value for LINENAME')

    if ogrtest.check_feature_geometry(feat, 'LINESTRING (-2 -49,-2.5 -49.0)',
                                      max_error=0.0000001) != 0:
        feat.DumpReadable()
        pytest.fail('did not get expected first geom')
Ejemplo n.º 3
0
def test_ogr_openair_1():

    ds = ogr.Open('data/openair_test.txt')
    assert ds is not None, 'cannot open dataset'

    lyr = ds.GetLayerByName('airspaces')
    assert lyr is not None, 'cannot find layer airspaces'

    feat = lyr.GetNextFeature()
    feat = lyr.GetNextFeature()
    feat = lyr.GetNextFeature()
    geom = feat.GetGeometryRef()
    if ogrtest.check_feature_geometry(feat, 'POLYGON ((49.75 2.75,49.75 3.0,49.5 3.0,49.5 2.75,49.75 2.75))',
                                      max_error=0.0000001) != 0:
        print('did not get expected first geom')
        pytest.fail(geom.ExportToWkt())
    style = feat.GetStyleString()
    assert style == 'PEN(c:#0000FF,w:2pt,p:"5px 5px");BRUSH(fc:#00FF00)', \
        'did not get expected style'

    lyr = ds.GetLayerByName('labels')
    assert lyr is not None, 'cannot find layer labels'
    feat = lyr.GetNextFeature()
    geom = feat.GetGeometryRef()
    if ogrtest.check_feature_geometry(feat, 'POINT (49.2625 2.504166666666667)',
                                      max_error=0.0000001) != 0:
        print('did not get expected geom on labels layer')
        pytest.fail(geom.ExportToWkt())
Ejemplo n.º 4
0
def test_ogr_factory_2():

    src_wkt = 'MULTIPOLYGON (((0 0,100 0,100 100,0 0)))'
    exp_wkt = 'POLYGON((0 0,100 0,100 100,0 0))'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToPolygon(src_geom)

    assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt()

    src_wkt = 'MULTISURFACE (((0 0,100 0,100 100,0 0)))'
    exp_wkt = 'POLYGON((0 0,100 0,100 100,0 0))'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToPolygon(src_geom)

    assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt()

    src_wkt = 'CURVEPOLYGON ((0 0,100 0,100 100,0 0))'
    exp_wkt = 'POLYGON((0 0,100 0,100 100,0 0))'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToPolygon(src_geom)

    assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt()

    src_wkt = 'CURVEPOLYGON (CIRCULARSTRING(0 0,0 1,0 2,1 2,2 2,2 1,2 0,1 0,0 0))'
    exp_wkt = 'POLYGON ((0 0,0 1,0 2,1 2,2 2,2 1,2 0,1 0,0 0))'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToPolygon(src_geom)

    assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt()
Ejemplo n.º 5
0
def ogr_gpx_4():
    if not gdaltest.have_gpx:
        return 'skip'

    if gdaltest.gpx_ds is None:
        return 'fail'

    lyr = gdaltest.gpx_ds.GetLayerByName( 'tracks' )

    lyr.ResetReading()
    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry( feat, 'MULTILINESTRING ((15 14,18 17),(21 20,24 23))', max_error = 0.0001 ) != 0:
        return 'fail'
    feat.Destroy()
    
    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry( feat, 'MULTILINESTRING EMPTY', max_error = 0.0001 ) != 0:
        return 'fail'
    feat.Destroy()
    
    feat = lyr.GetNextFeature()
    f_geom = feat.GetGeometryRef()
    if f_geom.ExportToWkt()!= 'MULTILINESTRING EMPTY':
        return 'fail'
    feat.Destroy()
    
    return 'success'
Ejemplo n.º 6
0
def ogr_gmt_4():

    ds = ogr.Open( 'data/test_multi.gmt' )
    lyr = ds.GetLayer(0)

    if lyr.GetLayerDefn().GetGeomType() != ogr.wkbMultiLineString:
        gdaltest.post_reason( 'did not get expected multilinestring type.')
        return 'fail'

    feat = lyr.GetNextFeature()

    if ogrtest.check_feature_geometry( feat, 'MULTILINESTRING ((175 -45,176 -45),(180.0 -45.3,179.0 -45.4))' ):
        return 'fail'

    if feat.GetField('name') != 'feature 1':
        gdaltest.post_reason( 'got wrong name, feature 1' )
        return 'fail'

    feat = lyr.GetNextFeature()

    if ogrtest.check_feature_geometry( feat, 'MULTILINESTRING ((175.1 -45.0,175.2 -45.1),(180.1 -45.3,180.0 -45.2))' ):
        return 'fail'

    if feat.GetField('name') != 'feature 2':
        gdaltest.post_reason( 'got wrong name, feature 2' )
        return 'fail'

    feat = lyr.GetNextFeature()

    if feat is not None:
        gdaltest.post_reason( 'did not get null feature when expected.' )
        return 'fail'

    return 'success'
Ejemplo n.º 7
0
def test_ogr_kml_linestring_read():

    if not ogrtest.have_read_kml:
        pytest.skip()

    assert ogrtest.kml_ds is not None, 'kml_ds is none'

    lyr = ogrtest.kml_ds.GetLayerByName('Paths')
    lyr.ResetReading()
    feat = lyr.GetNextFeature()

    wkt = 'LINESTRING (-112.081423783034495 36.106778704771372 0, -112.087026775269294 36.0905099328766 0)'
    assert not ogrtest.check_feature_geometry(feat, wkt)

    feat = lyr.GetNextFeature()
    assert feat is not None, 'expected feature not found.'

    wkt = 'LINESTRING (-112.080622229594994 36.106734600079953 0,-112.085242575314993 36.090495986124218 0)'
    assert not ogrtest.check_feature_geometry(feat, wkt)

    feat = lyr.GetNextFeature()
    assert feat is not None, 'expected feature not found.'

    wkt = 'LINESTRING (-112.265654928602004 36.094476726025462 2357,-112.266038452823807 36.093426088386707 2357,-112.266813901345301 36.092510587768807 2357,-112.267782683444494 36.091898273579957 2357,-112.268855751095202 36.091313794118697 2357,-112.269481071721899 36.090367720752099 2357,-112.269526855561097 36.089321714872852 2357,-112.269014456727604 36.088509160604723 2357,-112.268152881533894 36.087538135979557 2357,-112.2670588176031 36.086826852625677 2357,-112.265737458732104 36.086463123013033 2357)'
    assert not ogrtest.check_feature_geometry(feat, wkt)
Ejemplo n.º 8
0
def test_ogr_kml_point_read():

    if not ogrtest.have_read_kml:
        pytest.skip()

    assert ogrtest.kml_ds is not None, 'kml_ds is none'

    lyr = ogrtest.kml_ds.GetLayerByName('Placemarks')
    lyr.ResetReading()
    feat = lyr.GetNextFeature()

    wkt = 'POINT(-122.0822035425683 37.42228990140251)'

    assert not ogrtest.check_feature_geometry(feat, wkt)

    feat = lyr.GetNextFeature()
    assert feat is not None, 'expected feature not found.'

    wkt = 'POINT(-122.084075 37.4220033612141 50)'

    assert not ogrtest.check_feature_geometry(feat, wkt)

    feat = lyr.GetNextFeature()
    assert feat is not None, 'expected feature not found.'

    wkt = 'POINT(-122.0857667006183 37.42156927867553 50)'

    assert not ogrtest.check_feature_geometry(feat, wkt)
Ejemplo n.º 9
0
def ogr_sua_1():

    ds = ogr.Open('data/za.sua')
    if ds is None:
        gdaltest.post_reason('cannot open dataset')
        return 'fail'

    lyr = ds.GetLayer(0)
    if lyr is None:
        gdaltest.post_reason('cannot find layer')
        return 'fail'

    feat = lyr.GetNextFeature()
    geom = feat.GetGeometryRef()
    if ogrtest.check_feature_geometry(feat,'POLYGON ((24.760277777777777 -28.466666666666683,24.766895312434809 -28.46671727367243,24.773510850527718 -28.466869079419723,24.780122395865373 -28.467122038103,24.786727953485673 -28.467476073394735,24.793325530310469 -28.467931078467672,24.799913135516679 -28.468486916026166,24.806488781187785 -28.469143418346533,24.813050482985464 -28.469900387326192,24.819596260561802 -28.47075759454188,24.826124138325216 -28.47171478131645,24.832632145879771 -28.472771658795054,24.839118318703743 -28.47392790802968,24.845580698630823 -28.475183180072875,24.852017334528803 -28.476537096080108,24.858426282776776 -28.47798924742105,24.86480560789666 -28.479539195799475,24.871153383126547 -28.481186473381939,24.877467690931773 -28.482930582935339,24.883746623625481 -28.48477099797276,24.889988283903538 -28.486707162908274,24.896190785431472 -28.48873849322014,24.902352253349676 -28.490864375622735,24.908470824878808 -28.493084168246597,24.914544649847166 -28.495397200827426,24.920571891246279 -28.497802774903008,24.926550725747585 -28.500300164018839,24.932479344288705 -28.502888613941764,24.938355952571698 -28.505567342882131,24.944178771610126 -28.508335541723795,24.949946038264724 -28.511192374262492,24.955656005751909 -28.514136977452182,24.961306944165695 -28.517168461659423,24.966897141013046 -28.520285910925423,24.972424901704478 -28.523488383236369,24.977888550056022 -28.526774910801166,24.983286428814758 -28.530144500336959,24.988616900132001 -28.533596133362522,24.99387834606733 -28.537128766498796,24.999069169069763 -28.540741331777156,25.004187792453038 -28.544432736955102,25.009232660883608 -28.548201865839104,25.014202240830937 -28.552047578614662,25.019095021044684 -28.555968712183585,25.02390951301135 -28.559964080508252,25.028644251401499 -28.564032474962829,25.033297794511821 -28.568172664691346,25.037868724701763 -28.572383396972441,25.042355648839958 -28.576663397590849,25.046757198702647 -28.581011371215411,25.051072031428639 -28.585426001783489,25.055298829890791 -28.589905952891769,25.059436303127992 -28.594449868193294,25.063483186732412 -28.599056371800572,25.067438243238151 -28.603724068694731,25.071300262513763 -28.608451545140568,25.075068062113562 -28.613237369107495,25.078740487674832 -28.618080090695855,25.082316413248837 -28.622978242569175,25.085794741684015 -28.627930340391472,25.089174404927817 -28.632934883270281,25.092454364404489 -28.637990354204419,25.095633611313403 -28.643095220537134,25.098711166955503 -28.64824793441413,25.10168608305365 -28.653446933246229,25.104557442038406 -28.658690640176914,25.107324357344936 -28.663977464554407,25.109985973715663 -28.669305802407834,25.112541467439499 -28.674674036928209,25.114990046654459 -28.680080538952993,25.117330951578985 -28.685523667455101,25.119563454781961 -28.691001770035456,25.121686861395737 -28.696513183419484,25.123700509365641 -28.702056233957038,25.125603769666306 -28.707629238125719,25.127396046506441 -28.713230503037792,25.129076777527761 -28.718858326949757,25.130645434008265 -28.724510999775319,25.13210152102771 -28.730186803601043,25.133444577652867 -28.735884013204668,25.134674177090211 -28.741600896576003,25.135789926836566 -28.7473357154403,25.136791468828061 -28.753086725783632,25.137678479562659 -28.758852178380579,25.138450670228519 -28.764630319323757,25.139107786806342 -28.770419390555091,25.139649610175514 -28.776217630398676,25.140075956205322 -28.782023274095195,25.140386675823155 -28.787834554337508,25.140581655100206 -28.793649701807396,25.140660815291394 -28.799466945713419,25.140624112899374 -28.805284514329315,25.140471539698027 -28.811100635533307,25.140203122769478 -28.816913537347659,25.139818924509857 -28.822721448478802,25.139319042644907 -28.828522598857376,25.138703610206345 -28.834315220178425,25.137972795537667 -28.840097546441314,25.137126802248048 -28.845867814489324,25.136165869182687 -28.85162426454886,25.135090270371048 -28.857365140767754,25.133900314962272 -28.863088691752992,25.132596347160835 -28.868793171107171,25.131178746139458 -28.874476837963954,25.129647925945786 -28.880137957522209,25.128004335404732 -28.885774801578492,25.126248457993494 -28.891385649057952,25.124380811721167 -28.896968786543397,25.122401948989488 -28.902522508802292,25.120312456446726 -28.908045119311723,25.118112954838665 -28.913534930780742,25.11580409880861 -28.918990265670601,25.113386576755399 -28.924409456711885,25.110861110617904 -28.92979084741917,25.108228455676212 -28.935132792602516,25.105489400347579 -28.940433658875676,25.102644765960211 -28.94569182516129,25.099695406505884 -28.950905683192275,25.096642208420011 -28.956073638009698,25.093486090307582 -28.961194108456937,25.090228002679709 -28.96626552766962,25.086868927687608 -28.97128634356163,25.083409878829617 -28.976255019306763,25.079851900655964 -28.981170033815886,25.076196068457499 -28.986029882209536,25.072443487959553 -28.990833076285767,25.068595294982366 -28.995578144983043,25.064652655115509 -29.000263634838049,25.060616763368554 -29.004888110438372,25.05648884380911 -29.009450154869668,25.052270149197888 -29.013948370157522,25.04796196062637 -29.018381377703292,25.043565587113235 -29.022747818714564,25.039082365218423 -29.027046354629377,25.034513658643014 -29.031275667534388,25.029860857809823 -29.035434460576823,25.025125379446433 -29.039521458370103,25.020308666156058 -29.043535407392909,25.015412185972465 -29.047475076381517,25.010437431908937 -29.051339256715593,25.005385921523313 -29.055126762796746,25.000259196426232 -29.05883643242025,24.995058821820685 -29.062467127139698,24.98978638601983 -29.066017732624076,24.984443499974287 -29.069487159007593,24.979031796736475 -29.072874341232009,24.973552930996892 -29.076178239381264,24.96800857854516 -29.079397839008323,24.962400435777845 -29.082532151454132,24.95673021914298 -29.085580214158654,24.950999664626245 -29.088541090963787,24.945210527202558 -29.09141387240804,24.939364580306272 -29.094197676012925,24.933463615254794 -29.096891646561062,24.927509440705947 -29.09949495636549,24.921503882088025 -29.102006805530834,24.915448781031092 -29.104426422205322,24.909345994796006 -29.10675306282441,24.90319739567629 -29.108986012345341,24.897004870446018 -29.11112458447279,24.890770319697953 -29.113168121875631,24.884495657344228 -29.115115996394422,24.878182809944395 -29.116967609239822,24.871833716110423 -29.11872239118189,24.865450325918069 -29.120379802729857,24.859034600277788 -29.121939334302667,24.852588510335149 -29.123400506390141,24.846114036796582 -29.124762869704583,24.83961316938128 -29.1260260053228,24.8330879061436 -29.127189524818803,24.826540252848378 -29.128253070386421,24.819972222345168 -29.129216314952828,24.813385833911177 -29.1300789622818,24.806783112687896 -29.130840747067623,24.800166088946376 -29.131501435018961,24.793536797471898 -29.132060822933184,24.786897276912615 -29.132518738760538,24.780249569276663 -29.132875041658693,24.773595719053805 -29.133129622037345,24.766937772515039 -29.133282401592936,24.760277777777777 -29.13333333333334,24.753617783040514 -29.133282401592936,24.746959836501748 -29.133129622037345,24.740305986278891 -29.132875041658693,24.733658278642938 -29.132518738760538,24.727018758083656 -29.132060822933184,24.720389466609177 -29.131501435018961,24.713772442867658 -29.130840747067623,24.707169721644377 -29.1300789622818,24.700583333210385 -29.129216314952828,24.694015302707175 -29.128253070386421,24.687467649411953 -29.127189524818803,24.680942386174273 -29.1260260053228,24.674441518758972 -29.124762869704583,24.667967045220404 -29.123400506390141,24.661520955277766 -29.121939334302667,24.655105229637485 -29.120379802729857,24.64872183944513 -29.11872239118189,24.642372745611159 -29.116967609239822,24.636059898211325 -29.115115996394422,24.6297852358576 -29.113168121875631,24.623550685109535 -29.11112458447279,24.617358159879263 -29.108986012345341,24.611209560759548 -29.10675306282441,24.605106774524462 -29.104426422205322,24.599051673467528 -29.102006805530834,24.593046114849606 -29.09949495636549,24.587091940300759 -29.096891646561062,24.581190975249282 -29.094197676012925,24.575345028352995 -29.09141387240804,24.569555890929308 -29.088541090963787,24.563825336412574 -29.085580214158654,24.558155119777709 -29.082532151454132,24.552546977010394 -29.079397839008323,24.547002624558662 -29.076178239381264,24.541523758819078 -29.072874341232009,24.536112055581267 -29.069487159007593,24.530769169535724 -29.066017732624076,24.525496733734869 -29.062467127139698,24.520296359129322 -29.05883643242025,24.51516963403224 -29.055126762796746,24.510118123646617 -29.051339256715593,24.505143369583088 -29.047475076381517,24.500246889399495 -29.043535407392909,24.495430176109121 -29.039521458370103,24.490694697745731 -29.035434460576823,24.486041896912539 -29.031275667534388,24.48147319033713 -29.027046354629377,24.476989968442318 -29.022747818714564,24.472593594929183 -29.018381377703292,24.468285406357666 -29.013948370157522,24.464066711746444 -29.009450154869668,24.459938792187 -29.004888110438372,24.455902900440044 -29.000263634838049,24.451960260573188 -28.995578144983043,24.448112067596 -28.990833076285767,24.444359487098055 -28.986029882209536,24.44070365489959 -28.981170033815886,24.437145676725937 -28.976255019306763,24.433686627867946 -28.97128634356163,24.430327552875845 -28.96626552766962,24.427069465247971 -28.961194108456937,24.423913347135542 -28.956073638009698,24.42086014904967 -28.950905683192275,24.417910789595343 -28.94569182516129,24.415066155207974 -28.940433658875676,24.412327099879342 -28.935132792602516,24.409694444937649 -28.92979084741917,24.407168978800154 -28.924409456711885,24.404751456746943 -28.918990265670601,24.402442600716888 -28.913534930780742,24.400243099108827 -28.908045119311723,24.398153606566066 -28.902522508802292,24.396174743834386 -28.896968786543397,24.394307097562059 -28.891385649057952,24.392551220150821 -28.885774801578492,24.390907629609767 -28.880137957522209,24.389376809416095 -28.874476837963954,24.387959208394719 -28.868793171107171,24.386655240593281 -28.863088691752992,24.385465285184505 -28.857365140767754,24.384389686372867 -28.85162426454886,24.383428753306539 -28.845867814489324,24.382582760017886 -28.840097546441314,24.381851945350171 -28.834315220178425,24.381236512910647 -28.828522598857376,24.380736631045696 -28.822721448478802,24.380352432786076 -28.816913537347659,24.380084015857527 -28.811100635533307,24.379931442656179 -28.805284514329315,24.379894740264159 -28.799466945713419,24.379973900455347 -28.793649701807396,24.380168879732398 -28.787834554337508,24.380479599350231 -28.782023274095195,24.380905945380039 -28.776217630398676,24.381447768749211 -28.770419390555091,24.382104885327035 -28.764630319323757,24.382877075992894 -28.758852178380579,24.383764086727492 -28.753086725783632,24.384765628718988 -28.7473357154403,24.385881378465342 -28.741600896576003,24.387110977902687 -28.735884013204668,24.388454034527843 -28.730186803601043,24.389910121547288 -28.724510999775319,24.391478778027793 -28.718858326949757,24.393159509049113 -28.713230503037792,24.394951785889248 -28.707629238125719,24.396855046189913 -28.702056233957038,24.398868694159816 -28.696513183419484,24.400992100773593 -28.691001770035456,24.403224603976568 -28.685523667455101,24.405565508901095 -28.680080538952993,24.408014088116055 -28.674674036928209,24.410569581839891 -28.669305802407834,24.413231198210617 -28.663977464554407,24.415998113517148 -28.658690640176914,24.418869472501903 -28.653446933246229,24.42184438860005 -28.64824793441413,24.424921944242151 -28.643095220537134,24.428101191151065 -28.637990354204419,24.431381150627736 -28.632934883270281,24.434760813871538 -28.627930340391472,24.438239142306717 -28.622978242569175,24.441815067880722 -28.618080090695855,24.445487493441991 -28.613237369107495,24.449255293041791 -28.608451545140568,24.453117312317403 -28.603724068694731,24.457072368823141 -28.599056371800572,24.461119252427562 -28.594449868193294,24.465256725664762 -28.589905952891769,24.469483524126915 -28.585426001783489,24.473798356852907 -28.581011371215411,24.478199906715595 -28.576663397590849,24.48268683085379 -28.572383396972441,24.487257761043733 -28.568172664691346,24.491911304154055 -28.564032474962829,24.496646042544203 -28.559964080508252,24.501460534510869 -28.555968712183585,24.506353314724617 -28.552047578614662,24.511322894671945 -28.548201865839104,24.516367763102515 -28.544432736955102,24.52148638648579 -28.540741331777156,24.526677209488223 -28.537128766498796,24.531938655423552 -28.533596133362522,24.537269126740796 -28.530144500336959,24.542667005499531 -28.526774910801166,24.548130653851075 -28.523488383236369,24.553658414542507 -28.520285910925423,24.559248611389858 -28.517168461659423,24.564899549803645 -28.514136977452182,24.57060951729083 -28.511192374262492,24.576376783945427 -28.508335541723795,24.582199602983856 -28.505567342882131,24.588076211266849 -28.502888613941764,24.594004829807968 -28.500300164018839,24.599983664309274 -28.497802774903008,24.606010905708388 -28.495397200827426,24.612084730676745 -28.493084168246597,24.618203302205877 -28.490864375622735,24.624364770124082 -28.48873849322014,24.630567271652016 -28.486707162908274,24.636808931930073 -28.48477099797276,24.64308786462378 -28.482930582935339,24.649402172429006 -28.481186473381939,24.655749947658894 -28.479539195799475,24.662129272778778 -28.47798924742105,24.668538221026751 -28.476537096080108,24.674974856924731 -28.475183180072875,24.68143723685181 -28.47392790802968,24.687923409675783 -28.472771658795054,24.694431417230337 -28.47171478131645,24.700959294993751 -28.47075759454188,24.70750507257009 -28.469900387326192,24.714066774367769 -28.469143418346533,24.720642420038875 -28.468486916026166,24.727230025245085 -28.467931078467672,24.73382760206988 -28.467476073394735,24.740433159690181 -28.467122038103,24.747044705027836 -28.466869079419723,24.753660243120745 -28.46671727367243,24.760277777777777 -28.466666666666683))',
                                      max_error = 0.0000001 ) != 0:
        print('did not get expected first geom')
        print(geom.ExportToWkt())
        return 'fail'

    feat = lyr.GetNextFeature()
    geom = feat.GetGeometryRef()
    if ogrtest.check_feature_geometry(feat,'POLYGON ((25.324444444444445 -28.735,25.324444444444445 -28.735,25.324444444444747 -28.735,25.3256844012835 -28.743637219488093,25.326752458414518 -28.752292221672775,25.327648242989319 -28.760962374913134,25.328371434292126 -28.769645042225264,25.328921763884399 -28.778337582080368,25.329299015739096 -28.787037349205164,25.329503026367707 -28.795741695383924,25.329533684919237 -28.804447970262672,25.329390933266499 -28.813153522154423,25.329074766083266 -28.821855698846022,25.328585230899417 -28.830551848405761,25.32792242813515 -28.839239319991876,25.327086511130251 -28.847915464661341,25.326077686158602 -28.856577636179196,25.324896212403537 -28.865223191827752,25.323542401945843 -28.873849493215474,25.322016619719491 -28.882453907085591,25.320319283456154 -28.891033806123644,25.31845086360034 -28.899586569764509,25.316411883234647 -28.908109584997732,25.314202917960664 -28.916600247171544,25.311824595781452 -28.925055960795305,25.309277596961152 -28.933474140339584,25.306562653857945 -28.941852211034359,25.303680550768494 -28.950187609664397,25.300632123720742 -28.958477785362163,25.29741826027432 -28.966720200397404,25.294039899300181 -28.974912330963704,25.290498030727949 -28.983051667961448,25.286793695305345 -28.991135717776984,25.282927984310767 -28.999162003057677,25.278902039273312 -29.007128063482853,25.274717051653134 -29.015031456530025,25.270374262533323 -29.022869758236496,25.265874962270246 -29.030640563955714,25.26122049013696 -29.038341489108532,25.256412233959036 -29.045970169928736,25.251451629715206 -29.053524264202991,25.246340161140221 -29.06100145200449,25.241079359298173 -29.068399436420506,25.23567080214746 -29.075715944273327,25.230116114090873 -29.082948726834402,25.224416965497046 -29.090095560531509,25.218575072228933 -29.097154247648504,25.212592195130505 -29.10412261701785,25.206470139518853 -29.110998524705039,25.200210754651753 -29.11777985468531,25.193815933175109 -29.124464519512046,25.187287610571182 -29.131050460976667,25.180627764570215 -29.137535650759972,25.173838414570472 -29.143918091074411,25.166921621027861 -29.150195815297337,25.159879484826497 -29.156366888594846,25.152714146662561 -29.162429408536127,25.145427786377269 -29.168381505697866,25.138022622300941 -29.174221344258754,25.130500910584292 -29.179947122583698,25.122864944495355 -29.185557073797725,25.115117053723321 -29.191049466349057,25.107259603657024 -29.196422604561548,25.099294994669837 -29.201674829175872,25.091225661355146 -29.206804517879718,25.083054071794677 -29.211810085826329,25.074782726776942 -29.216689986141546,25.066414159022649 -29.221442710419112,25.057950932399795 -29.226066789203841,25.049395641117307 -29.230560792462668,25.040750908918767 -29.234923330043529,25.032019388244304 -29.239153052121523,25.023203759421683 -29.243248649632577,25.014306729794193 -29.247208854694165,25.005331032890854 -29.251032441013166,24.996279427553059 -29.254718224280467,24.987154697052485 -29.258265062552468,24.977959648227149 -29.261671856618946,24.96869711057434 -29.264937550357544,24.959369935370919 -29.268061131074475,24.949980994740844 -29.271041629831515,24.940533180755306 -29.273878121758855,24.931029404524764 -29.276569726354225,24.921472595226302 -29.27911560776748,24.911865699212655 -29.281514975071246,24.902211679051732 -29.283767082516917,24.892513512561873 -29.285871229776419,24.882774191884664 -29.287826762169175,24.872996722502361 -29.289633070874672,24.863184122310912 -29.291289593130031,24.853339420578315 -29.292795812413047,24.843465657046142 -29.294151258610142,24.833565880890973 -29.295355508169479,24.823643149820615 -29.296408184238985,24.813700528987738 -29.297308956789578,24.803741090085058 -29.298057542722887,24.793767910343536 -29.298653705964284,24.783784071443542 -29.299097257540382,24.773792658660838 -29.299388055641543,24.763796759952577 -29.299526005669037,24.753799464358973 -29.299511060267122,24.743803861918728 -29.299343219339562,24.733813042177051 -29.299022530051275,24.723830092997549 -29.298549086814461,24.713858099961822 -29.297923031259401,24.703900145183407 -29.297144552190304,24.693959306309406 -29.296213885525674,24.684038655567267 -29.295131314223482,24.674141258801942 -29.293897168191322,24.664270174416327 -29.292511824181247,24.65442845241142 -29.290975705669538,24.644619133445421 -29.289289282721541,24.634845247808041 -29.287453071841185,24.625109814448344 -29.285467635805958,24.615415840038214 -29.283333583486638,24.605766317960285 -29.281051569652291,24.596164227391593 -29.278622294760709,24.586612532310763 -29.276046504733856,24.577114180572615 -29.273324990718947,24.567672102945274 -29.270458588834956,24.558289212193195 -29.267448179904818,24.548968402128249 -29.264294689173013,24.539712546687348 -29.260999086009392,24.530524499021816 -29.257562383598525,24.521407090592227 -29.253985638615347,24.512363130253711 -29.250269950886775,24.503395403389867 -29.246416463039765,24.494506670979664 -29.242426360135497,24.485699668772813 -29.238300869290413,24.476977106411617 -29.234041259283813,24.468341666547062 -29.229648840152166,24.459796004019395 -29.225124962770508,24.451342745027716 -29.220471018421009,24.442984486277584 -29.215688438348721,24.434723794192617 -29.210778693304832,24.426563204089472 -29.205743293077461,24.418505219398092 -29.200583786010426,24.410552310879975 -29.195301758509814,24.402706915859742 -29.189898834538667,24.394971437455574 -29.184376675100097,24.387348243856902 -29.178736977708979,24.379839667567335 -29.172981475852069,24.372448004707099 -29.167111938437387,24.365175514288836 -29.161130169232337,24.358024417543742 -29.155038006291477,24.350996897226008 -29.14883732137352,24.34409509694385 -29.142530019348044,24.337321120532131 -29.136118037592439,24.33067703138671 -29.129603345378626,24.324164851854118 -29.122987943250237,24.317786562621645 -29.116273862390543,24.311544102121797 -29.109463163980905,24.30543936594934 -29.10255793855049,24.2994742062996 -29.095560305316994,24.293650431416442 -29.088472411518978,24.287969805061284 -29.081296431740057,24.282434045985305 -29.074034567224615,24.277044827435564 -29.06668904518618,24.271803776659787 -29.059262118107824,24.266712474439807 -29.051756063035484,24.261772454629462 -29.044173180864007,24.256985203708833 -29.036515795616396,24.252352160375441 -29.02878625371649,24.247874715121878 -29.02098692325518,24.24355420984503 -29.013120193250629,24.239391937478619 -29.00518847290239,24.235389141624353 -28.997194190840176,24.231547016208346 -28.989139794367077,24.227866705162754 -28.981027748697628,24.224349302108447 -28.972860536191234,24.220995850059293 -28.964640655580638,24.217807341153009 -28.956370621196328,24.214784716384329 -28.948052962186651,24.211928865360008 -28.939690221734097,24.209240626079428 -28.931284956268058,24.206720784716541 -28.92283973467417,24.204370075425757 -28.914357137500531,24.202189180171864 -28.905839756161143,24.200178728561479 -28.897290192136808,24.198339297705129 -28.888711056173534,24.196671412087511 -28.880104967479028,24.195175543457147 -28.871474552917306,24.19385211072877 -28.862822446201619,24.192701479915275 -28.854151287086367,24.19172396405807 -28.845463720557575,24.190919823186178 -28.836762396022849,24.190289264288399 -28.828049966500572,24.189832441300496 -28.819329087808967,24.189549455112285 -28.810602417754893,24.189440353583787 -28.801872615323049,24.189505131591886 -28.793142339865469,24.189743731066635 -28.784414250291647,24.190156041080773 -28.775691004259812,24.190741897919008 -28.766975257369026,24.191501085191938 -28.758269662353158,24.192433333936325 -28.74957686827598,24.193538322762858 -28.740899519728529,24.194815678001433 -28.732240256028561,24.196264973852333 -28.723601710422116,24.197885732583238 -28.714986509287982,24.19967742470579 -28.706397271344827,24.201639469198703 -28.697836606861372,24.203771233721888 -28.68930711687004,24.206072034858177 -28.680811392383887,24.208541138376447 -28.672352013617413,24.211177759476751 -28.663931549211355,24.213981063100391 -28.655552555461597,24.2169501642021 -28.647217575552503,24.220084128082078 -28.638929138794964,24.223381970696099 -28.630689759869227,24.226842659002589 -28.622501938072631,24.230465111308209 -28.614368156572979,24.234248197645979 -28.606290881666965,24.238190740140944 -28.598272562044642,24.242291513417509 -28.590315628059457,24.246549244988177 -28.582422491004635,24.250962615689375 -28.574595542395741,24.255530260106084 -28.566837153259698,24.260250767015116 -28.559149673430525,24.265122679844414 -28.551535430851899,24.270144497143669 -28.543996730886917,24.275314673058389 -28.536535855634881,24.280631617835351 -28.529155063255686,24.286093698316382 -28.521856587301826,24.291699238459888 -28.514642636057971,24.297446519871226 -28.507515391888845,24.303333782336477 -28.500477010594921,24.309359224380383 -28.493529620776712,24.31552100381996 -28.486675323207294,24.321817238338735 -28.479916190213615,24.328246006069861 -28.473254265066558,24.334805346194791 -28.466691561380145,24.341493259533799 -28.4602300625194,24.348307709170513 -28.453871721018132,24.355246621064914 -28.447618458005579,24.362307884696193 -28.441472162642967,24.369489353694416 -28.435434691569711,24.376788846495483 -28.429507868359337,24.384204147000045 -28.423693482985684,24.391733005249641 -28.417993291298984,24.399373138086929 -28.412409014512306,24.407122229850941 -28.406942338698542,24.414977933080777 -28.401594914297746,24.422937869201576 -28.396368355635119,24.430999629236783 -28.391264240449956,24.43916077453795 -28.38628410943538,24.447418837487788 -28.381429465788997,24.455771322249223 -28.37670177477483,24.464215705504113 -28.372102463296528,24.472749437186824 -28.367632919481679,24.481369941250147 -28.363294492277845,24.490074616410581 -28.359088491059879,24.498860836925523 -28.355016185249198,24.50772595334951 -28.351078803944461,24.516667293338532 -28.347277535564402,24.525682162385579 -28.343613527502299,24.534767844672221 -28.340087885792698,24.543921603800779 -28.336701674789964,24.553140683623202 -28.333455916859251,24.562422309051517 -28.330351592079595,24.57176368682665 -28.327389637959214,24.581162006386851 -28.324570949163544,24.590614440635008 -28.3218963772552,24.60011814677102 -28.31936673044703,24.609670267145127 -28.316982773367286,24.619267930032869 -28.314745226837644,24.628908250528362 -28.312654767663972,24.63858833131291 -28.310712028439568,24.648305263544835 -28.308917597361543,24.658056127663254 -28.30727201805972,24.667837994267057 -28.305775789438641,24.677647924917796 -28.304429365532272,24.687482973026292 -28.303233155371913,24.697340184664604 -28.302187522866816,24.707216599457116 -28.301292786698056,24.717109251382755 -28.300549220225193,24.727015169673113 -28.299957051406295,24.736931379690652 -28.299516462730722,24.746854903656409 -28.299227591165192,24.756782761632255 -28.29909052811297,24.766711972434599 -28.299105319386072,24.776639554240347 -28.299271965190698,24.786562525734769 -28.299590420125625,24.796477906700915 -28.300060593194004,24.806382719171182 -28.300682347828001,24.816273988013755 -28.301455501926711,24.826148741958701 -28.302379827907302,24.836004014361414 -28.303455052768882,24.845836844098478 -28.304680858169917,24.855644276402057 -28.306056880518398,24.865423363765725 -28.307582711075085,24.875171166708189 -28.309257896070051,24.884884754678925 -28.311081936831783,24.894561206900327 -28.313054289929653,24.904197613154185 -28.315174367329107,24.913791074742456 -28.317441536559656,24.92333870518836 -28.31985512089615,24.932837631161526 -28.322414399552244,24.93611111111111 -28.323333333333334,24.93611111111111 -28.323333333333334,24.74 -28.466111111111111,24.74 -28.466111111111111,24.740000000006798 -28.466111111112809,24.746632430249097 -28.465871637044913,24.753268187622954 -28.465733642679226,24.759905272118928 -28.465697157550323,24.766541673734942 -28.465762180560702,24.77317539772077 -28.4659286799847,24.779804440348542 -28.466196593481584,24.786426802076775 -28.466565828117496,24.793040485511163 -28.467036260396483,24.799643496136763 -28.467607736300309,24.806233842740653 -28.468280071337446,24.812809538018556 -28.46905305060092,24.819368599277652 -28.469926428834924,24.825909048903572 -28.470899930510456,24.832428914991102 -28.471973249910022,24.838926231930369 -28.473146051220724,24.845399040894488 -28.474417968636757,24.85184539057164 -28.475788606470175,24.85826333757198 -28.477257539270838,24.864650947139452 -28.478824311954796,24.871006293602161 -28.480488439941709,24.877327461036565 -28.482249409300493,24.883612543751585 -28.484106676904105,24.889859646912562 -28.486059670592425,24.896066887037229 -28.488107789344113,24.902232392611545 -28.490250403456642,24.908354304611503 -28.492486854734935,24.91443077703882 -28.494816456688355,24.920459977479492 -28.49723849473618,24.926440087661302 -28.499752226420981,24.932369303955355 -28.502356881630817,24.938245837939125 -28.505051662829032,24.944067916906295 -28.50783574529251,24.949833784410384 -28.510708277357907,24.955541700766702 -28.51366838067581,24.961189943568936 -28.516715150472848,24.966776808222054 -28.519847655821607,24.972300608432882 -28.523064939918342,24.9777596767074 -28.526366020368442,24.983152364848348 -28.529749889479419,24.988477044467242 -28.533215514561434,24.993732107439818 -28.536761838235364,24.998915966414472 -28.540387778748141,25.004027055264203 -28.544092230295462,25.009063829563729 -28.547874063351784,25.014024767071181 -28.551732125007007,25.018908368153632 -28.555665239310756,25.023713156252619 -28.559672207623251,25.028437678344208 -28.563751808972938,25.033080505346668 -28.567902800421166,25.03764023257828 -28.572123917433132,25.042115480170764 -28.576413874255621,25.046504893485697 -28.580771364301086,25.050807143534044 -28.585195060537998,25.055020927375441 -28.589683615887409,25.059144968510566 -28.594235663625824,25.063178017286948 -28.598849817793635,25.067118851257888 -28.603524673609968,25.070966275578758 -28.608258807892824,25.074719123363518 -28.61305077948515,25.078376256041661 -28.617899129686265,25.081936563715608 -28.622802382688874,25.085398965501863 -28.627759046021239,25.088762409872622 -28.632767610994421,25.092025874965881 -28.637826553154852,25.095188368924873 -28.642934332741433,25.098248930184742 -28.648089395147835,25.101206627805809 -28.653290171388974,25.104060561732403 -28.658535078572456,25.106809863101081 -28.663822520374055,25.109453694502864 -28.669150887517645,25.111991250254196 -28.674518558259152,25.114421756659766 -28.679923898874449,25.116744472249401 -28.685365264151244,25.118958688020527 -28.690840997884379,25.121063727672666 -28.696349433375019,25.123058947821914 -28.701888893932889,25.124943738219745 -28.707457693382054,25.126717521933593 -28.713054136569667,25.128379755560044 -28.718676519877718,25.129929929402699 -28.724323131737549,25.131367567623556 -28.729992253147103,25.132692228430109 -28.735682158190684,25.13390350421783 -28.741391114561011,25.135001021699754 -28.747117384083495,25.135984442057644 -28.752859223242652,25.136853461048599 -28.75861488371028,25.137607809118133 -28.764382612875551,25.138247251504847 -28.770160654376411,25.138771588331661 -28.775947248632733,25.139180654678363 -28.781740633380437,25.139474320653182 -28.787539044207037,25.139652491459525 -28.793340715087666,25.139715107429993 -28.79914387892245,25.139662144076386 -28.804946768074032,25.139493612107152 -28.810747614905807,25.139444444444443 -28.811944444444446,25.139444444444443 -28.811944444444446,25.324444444444445 -28.735))',
                                      max_error = 0.0000001 ) != 0:
        print('did not get expected second geom')
        print(geom.ExportToWkt())
        return 'fail'

    return 'success'
Ejemplo n.º 10
0
def test_ogr_kml_polygon_read():

    if not ogrtest.have_read_kml:
        pytest.skip()

    assert ogrtest.kml_ds is not None, 'kml_ds is none'

    lyr = ogrtest.kml_ds.GetLayerByName('Google Campus')
    lyr.ResetReading()
    feat = lyr.GetNextFeature()

    wkt = 'POLYGON ((-122.084893845961204 37.422571240447859 17,-122.084958097919795 37.422119226268563 17,-122.084746957304702 37.42207183952619 17,-122.084572538096197 37.422090067296757 17,-122.084595488672306 37.422159327008949 17,-122.0838521118269 37.422272785643713 17,-122.083792243334997 37.422035391120843 17,-122.0835076656616 37.422090069571063 17,-122.083470946415204 37.422009873951609 17,-122.083122108574798 37.422104649494599 17,-122.082924737457205 37.422265039903863 17,-122.082933916938501 37.422312428430942 17,-122.083383735973698 37.422250460876178 17,-122.083360785424802 37.422341592287452 17,-122.083420455164202 37.42237075460644 17,-122.083659133885007 37.422512920110009 17,-122.083975843895203 37.422658730937812 17,-122.084237474333094 37.422651439725207 17,-122.0845036949503 37.422651438643499 17,-122.0848020460801 37.422611339163147 17,-122.084788275051494 37.422563950551208 17,-122.084893845961204 37.422571240447859 17))'
    assert not ogrtest.check_feature_geometry(feat, wkt)

    feat = lyr.GetNextFeature()
    assert feat is not None, 'expected feature not found.'

    wkt = 'POLYGON ((-122.085741277148301 37.422270331552568 17,-122.085816976848093 37.422314088323461 17,-122.085852582875006 37.422303374697442 17,-122.085879994563896 37.422256861387893 17,-122.085886010140896 37.422231107613797 17,-122.085806915728796 37.422202501738553 17,-122.085837954265301 37.42214027058678 17,-122.085673264051906 37.422086902144081 17,-122.085602292640701 37.42214885429042 17,-122.085590277843593 37.422128290487002 17,-122.085584167223701 37.422081719672462 17,-122.085485206574106 37.42210455874995 17,-122.085506726435199 37.422142679498243 17,-122.085443071291493 37.422127838461719 17,-122.085099071490404 37.42251282407603 17,-122.085676981863202 37.422818153236513 17,-122.086016227378295 37.422449188587223 17,-122.085726032700407 37.422292396042529 17,-122.085741277148301 37.422270331552568 17))'
    assert not ogrtest.check_feature_geometry(feat, wkt)

    feat = lyr.GetNextFeature()
    assert feat is not None, 'expected feature not found.'

    wkt = 'POLYGON ((-122.085786228724203 37.421362088869692 25,-122.085731299060299 37.421369359894811 25,-122.085731299291794 37.421409349109027 25,-122.085607707367899 37.421383901665649 25,-122.085580242651602 37.42137299550869 25,-122.085218622197104 37.421372995043157 25,-122.085227776563897 37.421616565082651 25,-122.085259818934702 37.421605658944031 25,-122.085259818549901 37.421682001560001 25,-122.085236931147804 37.421700178603459 25,-122.085264395782801 37.421761979825753 25,-122.085323903274599 37.421761980139067 25,-122.085355945432397 37.421852864451999 25,-122.085410875246296 37.421889218237339 25,-122.085479537935697 37.42189285337048 25,-122.085543622981902 37.421889217975462 25,-122.085626017804202 37.421860134999257 25,-122.085937287963006 37.421860134536047 25,-122.085942871866607 37.42160898590042 25,-122.085965546986102 37.421579927591438 25,-122.085864046234093 37.421471150029568 25,-122.0858548911215 37.421405713261841 25,-122.085809116276806 37.4214057134039 25,-122.085786228724203 37.421362088869692 25))'
    assert not ogrtest.check_feature_geometry(feat, wkt)

    feat = lyr.GetNextFeature()
    assert feat is not None, 'expected feature not found.'

    wkt = 'POLYGON ((-122.084437112828397 37.421772530030907 19,-122.084511885574599 37.421911115428962 19,-122.0850470999805 37.421787551215353 19,-122.085071991339106 37.421436630231611 19,-122.084916406231997 37.421372378221157 19,-122.084219386816699 37.421372378016258 19,-122.084219386589993 37.421476171614962 19,-122.083808641999099 37.4214613409357 19,-122.083789972856394 37.421313064107963 19,-122.083279653469802 37.421293288405927 19,-122.083260981920702 37.421392139442979 19,-122.082937362173695 37.421372363998763 19,-122.082906242566693 37.421515697788713 19,-122.082850226966499 37.421762825764652 19,-122.082943578863507 37.421767769696352 19,-122.083217411188002 37.421792485526858 19,-122.0835970430103 37.421748007445601 19,-122.083945555677104 37.421693642376027 19,-122.084007789463698 37.421762838158529 19,-122.084113587521003 37.421748011043917 19,-122.084076247378405 37.421713412923751 19,-122.084144704773905 37.421678815345693 19,-122.084144704222993 37.421817206601972 19,-122.084250333307395 37.421817070044597 19,-122.084437112828397 37.421772530030907 19))'
    assert not ogrtest.check_feature_geometry(feat, wkt)
Ejemplo n.º 11
0
def test_ogr_factory_5():

    src_wkt = 'LINESTRING(2 5,10 20)'
    exp_wkt = 'MULTILINESTRING((2 5,10 20))'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToMultiLineString(src_geom)

    assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt()

    src_wkt = 'GEOMETRYCOLLECTION(LINESTRING(2 5,10 20),LINESTRING(0 0,10 10))'
    exp_wkt = 'MULTILINESTRING((2 5,10 20),(0 0,10 10))'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToMultiLineString(src_geom)

    assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt()

    src_wkt = 'POLYGON((2 5,10 20),(0 0,10 10))'
    exp_wkt = 'MULTILINESTRING((2 5,10 20),(0 0,10 10))'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToMultiLineString(src_geom)

    assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt()

    src_wkt = 'MULTIPOLYGON(((2 5,10 20),(0 0,10 10)),((2 5,10 20)))'
    exp_wkt = 'MULTILINESTRING((2 5,10 20),(0 0,10 10),(2 5,10 20))'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToMultiLineString(src_geom)

    assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt()
Ejemplo n.º 12
0
def ogr_geos_centroid():

    if not ogrtest.have_geos():
        return 'skip'

    g1 = ogr.CreateGeometryFromWkt( 'POLYGON((0 0, 10 10, 10 0, 0 0))' )

    centroid = g1.Centroid()

    g1.Destroy()

    if ogrtest.check_feature_geometry( centroid,
                                       'POINT(6.666666667 3.333333333)') != 0:
        print('Got: ', centroid.ExportToWkt())
        return 'fail'

    centroid.Destroy()

# Test with a self intersecting polygon too.
# This particular polygon has two triangles. The right triangle is larger.
    g2 = ogr.CreateGeometryFromWkt( 'POLYGON((0 0, 0 2, 2 -0.1, 2 2.1, 0 0))' )
    centroid2 = g2.Centroid()
    g2.Destroy()

    if ogrtest.check_feature_geometry( centroid2, 'POINT (8.0 1.0)') != 0:
        print('Got: ', centroid2.ExportToWkt())
        return 'fail'

    centroid2.Destroy()

    return 'success'
Ejemplo n.º 13
0
def test_ogr_factory_3():

    src_wkt = 'POLYGON((0 0,100 0,100 100,0 0))'
    exp_wkt = 'MULTIPOLYGON (((0 0,100 0,100 100,0 0)))'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToMultiPolygon(src_geom)

    assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt()

    src_wkt = 'GEOMETRYCOLLECTION(POLYGON((0 0,100 0,100 100,0 0)))'
    exp_wkt = 'MULTIPOLYGON (((0 0,100 0,100 100,0 0)))'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToMultiPolygon(src_geom)

    assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt()

    src_wkt = 'CURVEPOLYGON ((0 0,100 0,100 100,0 0))'
    exp_wkt = 'MULTIPOLYGON (((0 0,100 0,100 100,0 0)))'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToMultiPolygon(src_geom)

    assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt()

    src_wkt = 'MULTISURFACE (((0 0,100 0,100 100,0 0)))'
    exp_wkt = 'MULTIPOLYGON (((0 0,100 0,100 100,0 0)))'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToMultiPolygon(src_geom)

    assert not ogrtest.check_feature_geometry(dst_geom, exp_wkt), dst_geom.ExportToWkt()
Ejemplo n.º 14
0
def ogr_bna_3():

    gdaltest.bna_ds = ogr.Open( 'data/test.bna' )

    lyr = gdaltest.bna_ds.GetLayerByName( 'test_polygons' )

    expect = ['PID2', 'PID1', 'PID7', 'PID8']

    tr = ogrtest.check_features_against_list( lyr, 'Primary ID', expect )
    if not tr:
        return 'fail'
    lyr.ResetReading()
    feat = lyr.GetNextFeature()
    feat.Destroy()
    feat = lyr.GetNextFeature()
    feat.Destroy()
    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry( feat, 'MULTIPOLYGON (((0 0,1 0,1 1,0 1,0 0)))', max_error = 0.0001 ) != 0:
        return 'fail'
    feat.Destroy()
    feat = lyr.GetFeature(2)
    if ogrtest.check_feature_geometry( feat, 'MULTIPOLYGON (((0 0,1 0,1 1,0 1,0 0)))', max_error = 0.0001 ) != 0:
        return 'fail'
    feat.Destroy()
    feat = lyr.GetFeature(3)
    if ogrtest.check_feature_geometry( feat, 'POLYGON ((0 0,0 10,10 10,10 0,0 0),(2 2,2 8,8 8,8 2,2 2))', max_error = 0.0001 ) != 0:
        return 'fail'
    feat.Destroy()

    return 'success'
Ejemplo n.º 15
0
def ogr_csv_17():
    if gdaltest.csv_ds is None:
        return 'skip'

    csv_ds = ogr.Open( 'data/wkt.csv' )
    csv_lyr = csv_ds.GetLayer(0)

    if csv_lyr.GetLayerDefn().GetGeomType() != ogr.wkbUnknown:
        gdaltest.post_reason( 'did not get wktUnknown for geometry type.' )
        return 'fail'
    
    feat = csv_lyr.GetNextFeature()
    if feat.GetField( 'WKT' ) != 'POLYGON((6.25 1.25,7.25 1.25,7.25 2.25,6.25 2.25,6.25 1.25))':
        gdaltest.post_reason( 'feature 1: expected wkt value' )
        return 'fail'

    if ogrtest.check_feature_geometry( feat, 'POLYGON((6.25 1.25,7.25 1.25,7.25 2.25,6.25 2.25,6.25 1.25))'):
        return 'fail'

    feat.Destroy()

    feat = csv_lyr.GetNextFeature()
    feat.Destroy()
    
    feat = csv_lyr.GetNextFeature()
    if ogrtest.check_feature_geometry( feat, 'POLYGON((1.001 1.001,3.999 3.999,3.2 1.6,1.001 1.001))'):
        return 'fail'

    feat.Destroy()

    return 'success'
Ejemplo n.º 16
0
def ogr_dxf_8():

    # Skip boring line.
    feat = gdaltest.dxf_layer.GetNextFeature()
    feat.Destroy()

    # Dimension lines
    feat = gdaltest.dxf_layer.GetNextFeature()
    geom = feat.GetGeometryRef()

    if geom.GetGeometryType() != ogr.wkbMultiLineString:
        gdaltest.post_reason( 'did not get expected geometry type.' )
        return 'fail'

    if ogrtest.check_feature_geometry( feat, 'MULTILINESTRING ((63.862871944482457 149.209935992088333,24.341960668550669 111.934531038652722),(72.754404848874373 139.782768575383642,62.744609795879391 150.395563330366286),(33.233493572942614 102.507363621948002,23.2236985199476 113.120158376930675),(63.862871944482457 149.209935992088333,59.187727781045531 147.04077688455709),(63.862871944482457 149.209935992088333,61.424252078251662 144.669522208001183),(24.341960668550669 111.934531038652722,26.78058053478146 116.474944822739886),(24.341960668550669 111.934531038652722,29.017104831987599 114.103690146183979))' ):
        return 'fail'

    feat.Destroy()

    # Dimension text
    feat = gdaltest.dxf_layer.GetNextFeature()
    
    geom = feat.GetGeometryRef()

    if ogrtest.check_feature_geometry( feat, 'POINT (42.815907752635709 131.936242584545397)' ):
        return 'fail'

    expected_style = 'LABEL(f:"Arial",t:"54.3264",p:5,a:43.3,s:2.5g)'
    if feat.GetStyleString() != expected_style:
        gdaltest.post_reason( 'Got unexpected style string:\n%s\ninstead of:\n%s.' % (feat.GetStyleString(),expected_style) )
        return 'fail'

    feat.Destroy()
    
    return 'success'
Ejemplo n.º 17
0
def ogr_dxf_11():

    eo_ds = ogr.Open('data/entities_only.dxf')
    eo_lyr = eo_ds.GetLayer(0)
    
    # Check first point.
    feat = eo_lyr.GetNextFeature()

    if ogrtest.check_feature_geometry( feat,
                                       'POINT (672500.0 242000.0 539.986)' ):
        return 'fail'

    feat.Destroy()

    # Check second point.
    feat = eo_lyr.GetNextFeature()

    if ogrtest.check_feature_geometry( feat,
                                       'POINT (672750.0 242000.0 558.974)' ):
        return 'fail'

    feat.Destroy()

    eo_lyr = None
    eo_ds.Destroy()
    eo_ds = None

    return 'success'
Ejemplo n.º 18
0
def ogr_mysql_4():

    if gdaltest.mysql_ds is None:
        return 'skip'

    # E. Rouault : the mySQL driver doesn't seem to like adding new features and
    # iterating over a query at the same time.
    # If trying to do so, we get the 'Commands out of sync' error.

    wkt_list = [ '10', '2', '1', '4', '5', '6' ]

    gdaltest.mysql_lyr.ResetReading()

    feature_def = gdaltest.mysql_lyr.GetLayerDefn()

    for item in wkt_list:
        dst_feat = ogr.Feature( feature_def )

        wkt = open( 'data/wkb_wkt/'+item+'.wkt' ).read()
        geom = ogr.CreateGeometryFromWkt( wkt )

        ######################################################################
        # Write geometry as a new Oracle feature.

        dst_feat.SetGeometryDirectly( geom )
        dst_feat.SetField( 'PRFEDEA', item )
        gdaltest.mysql_lyr.CreateFeature( dst_feat )

        dst_feat.Destroy()

    # FIXME : The source wkt polygons of '4' and '6' are not closed and
    # mySQL return them as closed, so the check_feature_geometry returns FALSE
    # Checking them after closing the rings again returns TRUE.

    wkt_list = [ '10', '2', '1', '5', '4', '6' ]

    for item in wkt_list:
        wkt = open( 'data/wkb_wkt/'+item+'.wkt' ).read()
        geom = ogr.CreateGeometryFromWkt( wkt )

        ######################################################################
        # Read back the feature and get the geometry.

        gdaltest.mysql_lyr.SetAttributeFilter( "PRFEDEA = '%s'" % item )
        feat_read = gdaltest.mysql_lyr.GetNextFeature()
        geom_read = feat_read.GetGeometryRef()

        if ogrtest.check_feature_geometry( feat_read, geom ) != 0:
            print('Geometry changed. Closing rings before trying again for wkt #',item)
            print('(before):',geom.ExportToWkt())
            geom.CloseRings()
            print('(after) :',geom.ExportToWkt())
            if ogrtest.check_feature_geometry( feat_read, geom ) != 0:
                return 'fail'

        feat_read.Destroy()


    return 'success'
Ejemplo n.º 19
0
def ogr_interlis_arc1():

    if not gdaltest.have_ili_reader:
        return 'skip'

    gdal.SetConfigOption('OGR_STROKE_CURVE', 'TRUE')
    #gdal.SetConfigOption('OGR_ARC_STEPSIZE', '0.96')
    ds = ogr.Open('data/ili/Beispiel.itf,data/ili/Beispiel.imd')

    gdal.SetConfigOption('OGR_STROKE_CURVE', None)
    
    length_0_1_deg = 72.7181992353 # Line length with 0.1 degree segments

    #Read Area lines
    lyr = ds.GetLayerByName('Bodenbedeckung__BoFlaechen_Form')
    if lyr.GetFeatureCount() != 4:
        gdaltest.post_reason( 'feature count wrong.' )
        return 'fail'

    #Get 3rd feature
    feat = lyr.GetNextFeature()
    feat = lyr.GetNextFeature()
    feat = lyr.GetNextFeature()

    geom = feat.GetGeometryRef()
    length = geom.Length()
    if abs(length-length_0_1_deg) > 0.001:
        gdaltest.post_reason( 'Length() result wrong, got %g.' % length )
        return 'fail'
    if ogrtest.check_feature_geometry(geom, 'MULTILINESTRING ((186.38 206.82,186.456637039593772 206.352374385077951,186.525513501820711 205.883542875348297,186.586610467027612 205.413634254015022,186.639911152487883 204.942777600139351,186.685400917071064 204.471102253228281,186.72306726518579 203.998737777656032,186.752899850289367 203.525813927088137,186.774890477674461 203.05246060886563,186.789033106731921 202.578807848280093,186.795323852631526 202.104985752892361,186.793760987376999 201.631124476756639,186.784344940257114 201.157354184717377,186.76707829777294 200.683805016597006,186.741965802895692 200.210607051507367,186.709014353764331 199.737890272066551,186.668233001808375 199.265784528717603,186.619632949244959 198.79441950407633,186.563227546008392 198.323924677271833,186.499032286083064 197.854429288403452,186.427064803254297 197.386062303034095,186.347344866240718 196.918952376778151,186.259894373302785 196.453227819933062,186.164737346189185 195.989016562249134,186.06189992355209 195.52644611780849,185.951410353787622 195.065643549954956,185.83329898723602 194.606735436434946,185.70759826788705 194.149847834589281,185.574342724430579 193.695106246756012,185.433568960797828 193.242635585782381,185.285315646106 192.792560140718678,185.129623504006275 192.345003542672174,184.966535301544326 191.900088730850229,184.796095837373258 191.457937918770739,184.618351929457248 191.018672560741805,184.433352402229474 190.582413318443258,184.241148073160701 190.149280027813774,184.04179173881127 189.71939166611989,183.835338160315558 189.292866319286958,183.621844048349857 188.869821149441094,183.401368047569093 188.450372362771276,183.173970720454207 188.03463517752968,182.939714530730242 187.622723792475853,182.698663826158707 187.214751355422749,182.450884820893378 186.810829932226596,182.196445577297681 186.411070475951391,181.935415987201822 186.015582796419011,181.667867752774299 185.624475530035824,181.3938743667604 185.237856109953981,181.113511092327798 184.855830736560137,180.826854942395556 184.478504348306132,180.53398465846837 184.105980592874374,180.234980689005141 183.73836179872157,179.929925167336449 183.375748946964421,179.618901889065427 183.018241643621849,179.301996289112111 182.665938092286495,178.979295418190276 182.318935067130923,178.650887918905909 181.977327886313986,178.316864001440962 181.64121038583832,177.97731541873506 181.310674893720687,177.632335441296135 180.985812204678922,177.282018831589056 180.666711555153569,176.9264618179877 180.353460598817009,176.565762068363227 180.046145382490039,176.200018663221243 179.744850322516839,175.829332068533375 179.449658181561944,175.453804108095909 179.160650045865594,175.073537935597386 178.877905303001143,174.688638006242371 178.601501620054449,174.299210048091453 178.331514922276227,173.905361033015623 178.068019372236421,173.507199147294131 177.811087349466078,173.104833761914023 177.560789430557605,172.698375402513165 177.317194369767066,172.28793571903222 177.080369080176723,171.873627455046488 176.850378615250492,171.455564416777605 176.627286151007837,171.033861441848018 176.411152968667096,170.60863436775486 176.202038437793476,170.18 176.0,140.69 156.63))') != 0:
        gdaltest.post_reason( 'Ili curve not correctly read' )
        print(geom.ExportToWkt())
        return 'fail'
    line = geom.GetGeometryRef(0)
    points = line.GetPoints()
    if len(points) != 81:
        gdaltest.post_reason( 'line point count wrong.' )
        return 'fail'

    #Get 4th feature
    feat = lyr.GetNextFeature()

    geom = feat.GetGeometryRef()
    length = geom.Length()
    if abs(length-98.0243498288) > 0.001:
        gdaltest.post_reason( 'Length() result wrong, got %g.' % length )
        return 'fail'
    if ogrtest.check_feature_geometry(geom, 'MULTILINESTRING ((186.38 206.82,194.26 208.19,194.360118941290381 207.583863387608318,194.450034548441351 206.976129417129414,194.52972141151983 206.366969832830335,194.599157011165488 205.756556781867374,194.658321725044487 205.145062765608571,194.707198833340925 204.532660590913991,194.745774523486006 203.919523321273999,194.774037894087058 203.305824227936654,194.791980957968889 202.691736740889581,194.799598644465704 202.077434399900056,194.796888800832647 201.463090805460496,194.783852192864259 200.848879569690297,194.760492504683469 200.234974267339538,194.72681633767931 199.621548386683543,194.682833208673372 199.00877528050475,194.628555547191326 198.396828117140075,194.56399869197773 197.785879831499159,194.489180886659568 197.176103076206317,194.40412327458759 196.567670172822517,194.308849892848201 195.960753063147394,194.203387665489544 195.355523260601302,194.087766395903571 194.752151801789267,193.962018758407766 194.150809198152245,193.826180289004668 193.55166538777118,193.680289375348337 192.954889687360236,193.524387245874067 192.360650744412823,193.358517958193232 191.769116489536799,193.182728386585921 191.180454089007952,192.997068208809623 190.594829897498101,192.80158989201297 190.012409411123343,192.596348677929171 189.433357220623265,192.381402567276353 188.857836964845745,192.156812303357555 188.28601128455918,191.922641354867636 187.718041776424769,191.678955898001703 187.15408894736899,191.425824797734066 186.594312169210724,191.163319588355051 186.038869633623079,190.891514453251119 185.48791830744446,190.610486203950103 184.941613888295223,190.320314258417028 184.400110760594515,190.021080618593231 183.863561951926357,189.71286984725154 183.332119089784072,189.395769044065645 182.805932358758554,189.069867821024644 182.285150458053948,188.735258277090878 181.769920559469,188.392034972181108 181.260388265836781,188.040294900434645 180.756697569857323,187.680137462819374 180.258990813403187,187.311664439032 179.767408647305245,186.934979958736193 179.282089991582296,186.550190472116782 178.803171996223654,186.157404719844607 178.330790002393741,185.756733702299215 177.865077504182381,185.348290648216761 177.406166110929888,184.932190982704896 176.954185509959615,184.508552294610098 176.50926343000171,184.077494303273824 176.071525605046162,183.639138824742957 175.641095738836128,183.193609737303603 175.218095469892404,182.741032946476452 174.802644337149076,182.281536349473726 174.394859746185801,181.815249799001293 173.994856936020341,181.34230506662422 173.60274894655592,180.86283580545566 173.21864658665433,180.376977512460115 172.84265840277655,179.884867490109144 172.47489064835824,179.38664480760778 172.115447253752762,178.882450261575258 171.764429796865414,178.372426336281904 171.421937474442501,177.856717163354887 171.08806707407345,177.335468481061952 170.762912946782279,176.808827593129507 170.446566980404867,176.276943327102316 170.13911857360651,175.739965992295737 169.840654610641622,175.198047337304331 169.551259436742839,174.651340507162928 169.271014834364934,174.1 169.0,145.08 149.94,140.69 156.63))') != 0:
        gdaltest.post_reason( 'Ili curve not correctly read' )
        print(geom.ExportToWkt())
        return 'fail'
    line = geom.GetGeometryRef(0)
    points = line.GetPoints()
    if len(points) != 81:
        gdaltest.post_reason( 'line point count wrong.' )
        return 'fail'

    return 'success'
Ejemplo n.º 20
0
def ogr_dxf_12():

    ds = ogr.GetDriverByName('DXF').CreateDataSource('tmp/dxf_11.dxf' )

    lyr = ds.CreateLayer( 'entities' )

    dst_feat = ogr.Feature( feature_def = lyr.GetLayerDefn() )
    dst_feat.SetGeometryDirectly( ogr.CreateGeometryFromWkt( 'LINESTRING(10 12, 60 65)' ) )
    lyr.CreateFeature( dst_feat )
    dst_feat.Destroy()
                                  
    dst_feat = ogr.Feature( feature_def = lyr.GetLayerDefn() )
    dst_feat.SetGeometryDirectly( ogr.CreateGeometryFromWkt( 'POLYGON((0 0,100 0,100 100,0 0))' ) )
    lyr.CreateFeature( dst_feat )
    dst_feat.Destroy()

    lyr = None
    ds = None

    # Read back.
    ds = ogr.Open('tmp/dxf_11.dxf')
    lyr = ds.GetLayer(0)
    
    # Check first feature
    feat = lyr.GetNextFeature()

    if ogrtest.check_feature_geometry( feat,
                                       'LINESTRING(10 12, 60 65)' ):
        print(feat.GetGeometryRef().ExportToWkt())
        return 'fail'

    if feat.GetGeometryRef().GetGeometryType() == ogr.wkbLineString25D:
        gdaltest.post_reason( 'not linestring 2D' )
        return 'fail'
        
    feat.Destroy()

    # Check second point.
    feat = lyr.GetNextFeature()

    if ogrtest.check_feature_geometry( feat,
                                       'POLYGON((0 0,100 0,100 100,0 0))' ):
        print(feat.GetGeometryRef().ExportToWkt())
        return 'fail'

    if feat.GetGeometryRef().GetGeometryType() == ogr.wkbPolygon25D:
        gdaltest.post_reason( 'not keeping polygon 2D' )
        return 'fail'
        
    feat.Destroy()

    lyr = None
    ds.Destroy()
    ds = None
    
    os.unlink( 'tmp/dxf_11.dxf' )
        
    return 'success'
Ejemplo n.º 21
0
def test_ogr_gmt_5():

    #######################################################
    # Create gmtory Layer
    gmt_drv = ogr.GetDriverByName('GMT')
    gdaltest.gmt_ds = gmt_drv.CreateDataSource('tmp/mpoly.gmt')
    gdaltest.gmt_lyr = gdaltest.gmt_ds.CreateLayer('mpoly')

    #######################################################
    # Setup Schema
    ogrtest.quick_create_layer_def(gdaltest.gmt_lyr,
                                   [('ID', ogr.OFTInteger)])

    #######################################################
    # Write a first multipolygon

    dst_feat = ogr.Feature(feature_def=gdaltest.gmt_lyr.GetLayerDefn())
    dst_feat.SetGeometryDirectly(
        ogr.CreateGeometryFromWkt('MULTIPOLYGON(((0 0,0 10,10 10,0 10,0 0),(3 3,4 4, 3 4,3 3)),((12 0,14 0,12 3,12 0)))'))
    dst_feat.SetField('ID', 15)
    gdal.SetConfigOption('GMT_USE_TAB', 'TRUE')  # Ticket #6453
    gdaltest.gmt_lyr.CreateFeature(dst_feat)
    gdal.SetConfigOption('GMT_USE_TAB', None)

    dst_feat = ogr.Feature(feature_def=gdaltest.gmt_lyr.GetLayerDefn())
    dst_feat.SetGeometryDirectly(
        ogr.CreateGeometryFromWkt('MULTIPOLYGON(((30 20,40 20,30 30,30 20)))'))
    dst_feat.SetField('ID', 16)
    gdaltest.gmt_lyr.CreateFeature(dst_feat)

    gdaltest.gmt_lyr = None
    gdaltest.gmt_ds = None

    # Reopen.

    ds = ogr.Open('tmp/mpoly.gmt')
    lyr = ds.GetLayer(0)

    assert lyr.GetLayerDefn().GetGeomType() == ogr.wkbMultiPolygon, \
        'did not get expected multipolygon type.'

    feat = lyr.GetNextFeature()

    assert not ogrtest.check_feature_geometry(feat, 'MULTIPOLYGON(((0 0,0 10,10 10,0 10,0 0),(3 3,4 4, 3 4,3 3)),((12 0,14 0,12 3,12 0)))')

    assert feat.GetField('ID') == 15, 'got wrong id, first feature'

    feat = lyr.GetNextFeature()

    assert not ogrtest.check_feature_geometry(feat, 'MULTIPOLYGON(((30 20,40 20,30 30,30 20)))')

    assert feat.GetField('ID') == 16, 'got wrong ID, second feature'

    feat = lyr.GetNextFeature()

    assert feat is None, 'did not get null feature when expected.'
Ejemplo n.º 22
0
def ogr_dxf_22():

    # Read TEXT feature
    ds = ogr.Open('data/text.dxf')
    lyr = ds.GetLayer(0)

    feat = lyr.GetNextFeature()
    if feat.GetFieldAsString('Text') != 'test_text':
        gdaltest.post_reason('bad attribute')
        return 'fail'
    style = feat.GetStyleString()
    if style != 'LABEL(f:"Arial",t:"test_text",a:45,s:10g,c:#ff0000)':
        gdaltest.post_reason('bad style')
        print(style)
        return 'fail'
    if ogrtest.check_feature_geometry( feat, 'POINT(1 2 3)' ):
        gdaltest.post_reason('bad geometry')
        return 'fail'

    # Write text feature
    out_ds = ogr.GetDriverByName('DXF').CreateDataSource('/vsimem/ogr_dxf_22.dxf')
    out_lyr = out_ds.CreateLayer( 'entities' )
    out_feat = ogr.Feature(out_lyr.GetLayerDefn())
    out_feat.SetStyleString(style)
    out_feat.SetGeometry(feat.GetGeometryRef())
    out_lyr.CreateFeature(out_feat)
    out_feat = None
    out_lyr = None
    out_ds = None

    ds = None

    # Check written file
    ds = ogr.Open('/vsimem/ogr_dxf_22.dxf')
    lyr = ds.GetLayer(0)

    feat = lyr.GetNextFeature()
    if feat.GetFieldAsString('Text') != 'test_text':
        gdaltest.post_reason('bad attribute')
        return 'fail'
    style = feat.GetStyleString()
    if style != 'LABEL(f:"Arial",t:"test_text",a:45,s:10g,c:#ff0000)':
        gdaltest.post_reason('bad style')
        print(style)
        return 'fail'
    if ogrtest.check_feature_geometry( feat, 'POINT(1 2 3)' ):
        gdaltest.post_reason('bad geometry')
        return 'fail'

    ds = None

    gdal.Unlink('/vsimem/ogr_dxf_22.dxf')

    return 'success'
Ejemplo n.º 23
0
def test_ogr_gtm_read_1():
    if not gdaltest.have_gtm:
        pytest.skip()

    assert gdaltest.gtm_ds is not None

    lyr = gdaltest.gtm_ds.GetLayerByName('samplemap_waypoints')

    assert lyr.GetFeatureCount() == 3, 'wrong number of features'

    # Test 1st feature
    feat = lyr.GetNextFeature()

    assert feat.GetField('name') == 'WAY6', 'Wrong name field value'

    assert feat.GetField('comment') == 'Santa Cruz Stadium', 'Wrong comment field value'

    assert feat.GetField('icon') == 92, 'Wrong icon field value'

    assert feat.GetField('time') == '2009/12/18 17:32:41', 'Wrong time field value'

    wkt = 'POINT (-47.789974212646484 -21.201919555664062)'
    assert not ogrtest.check_feature_geometry(feat, wkt), 'Unexpected geometry'

    # Test 2nd feature
    feat = lyr.GetNextFeature()

    assert feat.GetField('name') == 'WAY6', 'Wrong name field value'

    assert feat.GetField('comment') == 'Joe\'s Goalkeeper Pub', \
        'Wrong comment field value'

    assert feat.GetField('icon') == 4, 'Wrong icon field value'

    assert feat.GetField('time') == '2009/12/18 17:34:46', 'Wrong time field value'

    wkt = 'POINT (-47.909481048583984 -21.294229507446289)'
    assert not ogrtest.check_feature_geometry(feat, wkt), 'Unexpected geometry'

    # Test 3rd feature
    feat = lyr.GetNextFeature()

    assert feat.GetField('name') == '33543400', 'Wrong name field value'

    assert feat.GetField('comment') == 'City Hall', 'Wrong comment field value'

    assert feat.GetField('icon') == 61, 'Wrong icon field value'

    assert feat.GetField('time') is None, 'Wrong time field value'

    wkt = 'POINT (-47.806097491943362 -21.176849600708007)'
    assert not ogrtest.check_feature_geometry(feat, wkt), 'Unexpected geometry'
Ejemplo n.º 24
0
def test_ogr_dgn_8():

    if gdaltest.dgn_ds is None:
        pytest.skip()

    dgn2_ds = ogr.Open('tmp/dgn7.dgn')

    dgn2_lyr = dgn2_ds.GetLayerByName('elements')

    # Test first first, a text element.
    feat = dgn2_lyr.GetNextFeature()
    assert feat.GetField('Type') == 17 and feat.GetField('Level') == 1, \
        'feature 1: expected attributes'

    assert feat.GetField('Text') == 'Demo Text', 'feature 1: expected text'

    assert not ogrtest.check_feature_geometry(feat, 'POINT (0.73650000 4.21980000)')

    assert feat.GetStyleString() == 'LABEL(t:"Demo Text",c:#ffffff,s:1.000g,f:ENGINEERING)', \
        'feature 1: Style string different than expected.'

    # Check second element, a circle.

    feat = dgn2_lyr.GetNextFeature()
    assert feat.GetField('Type') == 12 and feat.GetField('Level') == 2, \
        'feature 2: expected attributes'

    geom = feat.GetGeometryRef()
    assert geom.GetCoordinateDimension() == 2, 'feature 2: expected 2d circle.'

    assert geom.GetGeometryName() == 'MULTILINESTRING', \
        'feature 2: Expected MULTILINESTRING.'

    genvelope = geom.GetEnvelope()
    assert genvelope[0] >= 0.3285 and genvelope[0] <= 0.3287 and genvelope[1] >= 9.6878 and genvelope[1] <= 9.6879 and genvelope[2] >= -0.0962 and genvelope[2] <= -0.0960 and genvelope[3] >= 9.26310 and genvelope[3] <= 9.2632, \
        'feature 2: geometry extents seem odd'

    # Check 3rd feature, a polygon

    feat = dgn2_lyr.GetNextFeature()
    assert feat.GetField('Type') == 6 and feat.GetField('Level') == 2 and feat.GetField('ColorIndex') == 83, \
        'feature 3: expected attributes'

    wkt = 'POLYGON ((4.53550000 3.31700000,4.38320000 2.65170000,4.94410000 2.52350000,4.83200000 3.33310000,4.53550000 3.31700000))'

    assert not ogrtest.check_feature_geometry(feat, wkt)

    # should be: 'BRUSH(fc:#b40000,id:"ogr-brush-0")'
    assert feat.GetStyleString() == 'PEN(id:"ogr-pen-0",c:#b40000)', \
        ('feature 3: Style string different than expected: ' + feat.GetStyleString())

    dgn2_ds = None
Ejemplo n.º 25
0
def test_ogr_gpx_2():
    if not gdaltest.have_gpx:
        pytest.skip()

    assert gdaltest.gpx_ds is not None

    lyr = gdaltest.gpx_ds.GetLayerByName('routes')

    lyr.ResetReading()
    feat = lyr.GetNextFeature()
    assert ogrtest.check_feature_geometry(feat, 'LINESTRING (6 5,9 8,12 11)', max_error=0.0001) == 0

    feat = lyr.GetNextFeature()
    assert ogrtest.check_feature_geometry(feat, 'LINESTRING EMPTY', max_error=0.0001) == 0
Ejemplo n.º 26
0
def ogr_dxf_9():

    # Skip two dimensions each with a line and text.
    for x in range(4):
        feat = gdaltest.dxf_layer.GetNextFeature()
        feat.Destroy()

    # block (merged geometries)
    feat = gdaltest.dxf_layer.GetNextFeature()
    geom = feat.GetGeometryRef()

    if geom.GetGeometryType() != ogr.wkbGeometryCollection25D:
        gdaltest.post_reason( 'did not get expected geometry type.' )
        return 'fail'

    if ogrtest.check_feature_geometry( feat, 'GEOMETRYCOLLECTION (LINESTRING (79.069506278985116 121.003652476272777 0,79.716898725419625 118.892590150942851 0),LINESTRING (79.716898725419625 118.892590150942851 0,78.140638855839953 120.440702522851453 0),LINESTRING (78.140638855839953 120.440702522851453 0,80.139111190485622 120.328112532167196 0),LINESTRING (80.139111190485622 120.328112532167196 0,78.619146316248077 118.920737648613908 0),LINESTRING (78.619146316248077 118.920737648613908 0,79.041358781314059 120.975504978601705 0))' ):
        return 'fail'

    feat.Destroy()

    # First of two MTEXTs
    feat = gdaltest.dxf_layer.GetNextFeature()
    if feat.GetField( 'Text' ) != gdaltest.sample_text:
        gdaltest.post_reason( 'Did not get expected first mtext.' )
        return 'fail'

    expected_style = 'LABEL(f:"Arial",t:"'+gdaltest.sample_style+'",a:45,s:0.5g,p:5,c:#000000)'
    if feat.GetStyleString() != expected_style:
        gdaltest.post_reason( 'Got unexpected style string:\n%s\ninstead of:\n%s.' % (feat.GetStyleString(),expected_style) )
        return 'fail'

    if ogrtest.check_feature_geometry( feat, 'POINT (77.602201427662891 120.775897075866169 0)' ):
        return 'fail'

    # Second of two MTEXTs
    feat = gdaltest.dxf_layer.GetNextFeature()
    if feat.GetField( 'Text' ) != 'Second':
        gdaltest.post_reason( 'Did not get expected second mtext.' )
        return 'fail'
    
    if feat.GetField( 'SubClasses' ) != 'AcDbEntity:AcDbMText':
        gdaltest.post_reason( 'Did not get expected subclasses.' )
        return 'fail'
    
    if ogrtest.check_feature_geometry( feat, 'POINT (79.977331629005178 119.698291706738644 0)' ):
        return 'fail'

    feat.Destroy()

    return 'success'
Ejemplo n.º 27
0
def ogr_svg_1():
    if not gdaltest.have_svg:
        return 'skip'

    if gdaltest.svg_ds is None:
        return 'fail'

    lyr = gdaltest.svg_ds.GetLayerByName('points')
    if lyr.GetFeatureCount() != 1:
        gdaltest.post_reason('wrong number of features')
        return 'fail'

    feat = lyr.GetNextFeature()

    if feat.GetFieldAsString('building') != 'yes':
        feat.DumpReadable()
        return 'fail'

    if ogrtest.check_feature_geometry(feat, 'POINT (-13610535.695141600444913 4561593.930507560260594)',
                                      max_error=0.0001) != 0:
        feat.DumpReadable()
        return 'fail'

    lyr = gdaltest.svg_ds.GetLayerByName('lines')
    if lyr.GetFeatureCount() != 1:
        gdaltest.post_reason('wrong number of features')
        return 'fail'

    feat = lyr.GetNextFeature()

    if ogrtest.check_feature_geometry(feat, 'LINESTRING (-13609855.59 4561479.26,-13609856.21 4561474.27,-13609860.03 4561468.87,-13609865.74 4561465.69,-13609869.54 4561465.06)',
                                      max_error=0.0001) != 0:
        feat.DumpReadable()
        return 'fail'

    lyr = gdaltest.svg_ds.GetLayerByName('polygons')
    if lyr.GetFeatureCount() != 1:
        gdaltest.post_reason('wrong number of features')
        return 'fail'

    feat = lyr.GetNextFeature()

    if ogrtest.check_feature_geometry(feat, 'POLYGON ((-13610027.72 4562403.66,-13609661.58 4562462.95,-13609671.33 4562516.4,-13609676.11 4562532.65,-13609692.36 4562552.71,-13609711.46 4562609.08,-13609721.97 4562634.89,-13609727.7 4562650.16,-13609727.7 4562666.41,-13609716.23 4562699.85,-13609698.09 4562758.14,-13609697.13 4562771.51,-13609706.68 4562811.64,-13609720.06 4562843.18,-13609723.88 4562863.23,-13609725.8 4562891.91,-13609721.02 4562919.61,-13609713.37 4562938.72,-13609701.91 4562954.97,-13609688.53 4562968.34,-13609668.47 4562979.8,-13609614.96 4562993.17,-13609589.16 4563005.6,-13609552.85 4563037.14,-13609530.88 4563053.37,-13609474.5 4563076.3,-13609487.81 4563109.75,-13609491.89 4563149.38,-13609478.48 4563157.66,-13609467.67 4563171.31,-13609462.25 4563189.21,-13609420.46 4563189.32,-13609401.89 4563191.92,-13609395.2 4563201.47,-13609287.23 4563264.53,-13609303.48 4563291.29,-13609330.23 4563313.26,-13609339.78 4563326.63,-13609342.66 4563340.96,-13609344.56 4563458.48,-13609341.7 4563482.38,-13609322.59 4563518.68,-13609304.43 4563574.1,-13609290.1 4563592.26,-13609289.15 4563615.19,-13609290.1 4563655.32,-13609287.23 4563675.38,-13609271.95 4563703.09,-13609263.35 4563739.4,-13609258.57 4563762.32,-13609250.73 4563760.48,-13609226.84 4563718.43,-13609214.42 4563688.81,-13609204.87 4563661.1,-13609191.49 4563641.03,-13609170.47 4563629.56,-13609137.03 4563632.44,-13609109.32 4563648.68,-13609097.85 4563676.39,-13609100.72 4563712.7,-13609102.63 4563800.59,-13609116.0 4563819.7,-13609156.13 4563850.28,-13609151.55 4563861.7,-13609044.54 4563885.58,-13609057.92 4563945.78,-13609058.88 4563959.15,-13609031.17 4563987.81,-13609014.93 4563969.66,-13608988.17 4563981.13,-13608918.43 4563946.74,-13608834.46 4563870.62,-13608756.43 4563811.52,-13608716.02 4563488.23,-13608439.74 4563228.22,-13608483.69 4563167.08,-13608471.27 4563156.56,-13608461.72 4563132.68,-13608457.89 4563102.1,-13608460.76 4563077.26,-13608464.58 4563054.33,-13608444.52 4563044.78,-13608428.02 4562925.57,-13608408.91 4562672.38,-13608471.97 4562671.42,-13608514.96 4562653.27,-13608586.63 4562653.27,-13608728.76 4562628.85,-13609304.17 4562530.01,-13609354.81 4562401.98,-13609349.2 4562281.92,-13609401.52 4562278.13,-13609426.46 4562253.26,-13609385.39 4562165.98,-13609374.88 4561992.09,-13609361.7 4561946.97,-13609413.36 4561935.48,-13609402.85 4561884.85,-13609429.6 4561890.57,-13609487.88 4561880.07,-13609495.53 4561931.65,-13609442.02 4561942.18,-13609454.44 4562017.65,-13609601.59 4561997.59,-13609881.1 4561949.97,-13609858.97 4561817.17,-13609878.07 4561814.31,-13609891.08 4561883.51,-13609912.1 4561880.63,-13609918.79 4561924.59,-13609922.03 4561942.33,-13609949.37 4561938.35,-13609971.5 4562072.19,-13610108.74 4562049.23,-13610117.33 4562098.92,-13610151.73 4562094.14,-13610154.59 4562109.42,-13610224.34 4562097.96,-13610222.43 4562079.81,-13610381.03 4562053.05,-13610401.1 4562051.15,-13610386.77 4561907.82,-13610286.45 4561921.2,-13610210.01 4561869.6,-13610188.04 4561873.42,-13610173.7 4561778.84,-13610177.52 4561770.24,-13610184.21 4561764.51,-13610403.97 4561729.15,-13610429.77 4561711.0,-13610442.18 4561704.31,-13610574.04 4561683.29,-13610579.77 4561748.26,-13610620.86 4561745.4,-13610652.39 4562062.61,-13610802.4 4562037.77,-13610765.13 4561654.62,-13610860.68 4561641.25,-13610892.21 4562001.46,-13610848.26 4562007.19,-13610850.37 4562027.78,-13610870.24 4562264.22,-13610821.87 4562270.93,-13610819.96 4562245.14,-13610749.26 4562250.86,-13610754.03 4562306.29,-13610861.04 4562285.26,-13610864.69 4562319.19,-13610873.3 4562318.24,-13610882.85 4562463.47,-13610835.12 4562470.5,-13610816.0 4562473.37,-13610816.96 4562481.96,-13610737.66 4562493.43,-13610746.26 4562564.13,-13610782.56 4562558.4,-13610784.48 4562580.38,-13610826.52 4562575.6,-13610828.43 4562590.89,-13610845.63 4562588.98,-13610891.49 4562583.24,-13610895.3 4562621.46,-13610829.38 4562629.11,-13610844.67 4562786.76,-13610613.45 4562823.06,-13610570.46 4562334.82,-13610699.56 4562312.97,-13610695.75 4562293.86,-13610689.66 4562256.58,-13610543.47 4562263.26,-13610548.25 4562316.77,-13610487.1 4562326.32,-13610483.27 4562297.66,-13610443.14 4562303.38,-13610446.97 4562333.96,-13610027.72 4562403.66))',
                                      max_error=0.0001) != 0:
        feat.DumpReadable()
        return 'fail'

    return 'success'
Ejemplo n.º 28
0
def ogr_arcgen_points25d():

    ds = ogr.Open('data/points25d.gen')
    if ds is None:
        gdaltest.post_reason('cannot open dataset')
        return 'fail'

    if ds.GetLayerCount() != 1:
        gdaltest.post_reason('bad layer count')
        return 'fail'

    lyr = ds.GetLayer(0)
    if lyr is None:
        gdaltest.post_reason('cannot find layer')
        return 'fail'

    if lyr.GetGeomType() != ogr.wkbPoint25D:
        gdaltest.post_reason('bad layer geometry type')
        return 'fail'

    feat = lyr.GetNextFeature()
    if feat.GetField(0) != 1:
        print('did not get expected ID')
        feat.DumpReadable()
        return 'fail'
    geom = feat.GetGeometryRef()
    if ogrtest.check_feature_geometry(feat,'POINT (2 49 10)',
                                      max_error = 0.0000001 ) != 0:
        print('did not get expected first geom')
        feat.DumpReadable()
        return 'fail'

    return 'success'
Ejemplo n.º 29
0
def ogr_arcgen_lines():

    ds = ogr.Open('data/lines.gen')
    if ds is None:
        gdaltest.post_reason('cannot open dataset')
        return 'fail'

    lyr = ds.GetLayer(0)
    if lyr is None:
        gdaltest.post_reason('cannot find layer')
        return 'fail'

    if lyr.GetGeomType() != ogr.wkbLineString:
        gdaltest.post_reason('bad layer geometry type')
        return 'fail'

    feat = lyr.GetNextFeature()
    if feat.GetField(0) != 1:
        print('did not get expected ID')
        feat.DumpReadable()
        return 'fail'
    geom = feat.GetGeometryRef()
    if ogrtest.check_feature_geometry(feat,'LINESTRING (2 49,3 50)',
                                      max_error = 0.0000001 ) != 0:
        print('did not get expected first geom')
        feat.DumpReadable()
        return 'fail'

    return 'success'
Ejemplo n.º 30
0
def test_ogr_fgdb_stress_2():
    if ogrtest.fgdb_drv is None:
        pytest.skip()

    ds_test = ogr.Open('tmp/test.gdb')
    ds_ref = ogr.Open('tmp/test.' + ogrtest.reference_ext)

    lyr_test = ds_test.GetLayer(0)
    lyr_ref = ds_ref.GetLayer(0)

    while True:
        f_test = lyr_test.GetNextFeature()
        f_ref = lyr_ref.GetNextFeature()
        assert not (f_test is None and f_ref is not None) or (f_test is not None and f_ref is None)
        if f_test is None:
            break
        if f_test.GetFID() != f_ref.GetFID() or \
           f_test['str'] != f_ref['str'] or \
           ogrtest.check_feature_geometry(f_test, f_ref.GetGeometryRef()) != 0:
            f_test.DumpReadable()
            f_ref.DumpReadable()
            pytest.fail()

    for val in range(1000):
        lyr_test.SetAttributeFilter("str = '%d'" % val)
        lyr_ref.SetAttributeFilter("str = '%d'" % val)
        assert lyr_test.GetFeatureCount() == lyr_ref.GetFeatureCount(), val
Ejemplo n.º 31
0
def ogr_dxf_18():

    ds = ogr.GetDriverByName('DXF').CreateDataSource('tmp/dxf_18.dxf',
                                                     ['HEADER=data/header_extended.dxf'])

    lyr = ds.CreateLayer( 'entities' )

    # Write a feature with a predefined LTYPE in the header.
    dst_feat = ogr.Feature( feature_def = lyr.GetLayerDefn() )
    dst_feat.SetGeometryDirectly( ogr.CreateGeometryFromWkt('LINESTRING(0 0,25 25)') )
    dst_feat.SetField( 'Linetype', 'DASHED' )
    dst_feat.SetStyleString( 'PEN(c:#ffff00,w:2g,p:"12.0g 6.0g")' )
    lyr.CreateFeature( dst_feat )

    # Write a feature with a named linetype but that isn't predefined in the header.
    dst_feat = ogr.Feature( feature_def = lyr.GetLayerDefn() )
    dst_feat.SetGeometryDirectly( ogr.CreateGeometryFromWkt('LINESTRING(5 5,30 30)') )
    dst_feat.SetField( 'Linetype', 'DOTTED' )
    dst_feat.SetStyleString( 'PEN(c:#ffff00,w:2g,p:"0.0g 4.0g")' )
    lyr.CreateFeature( dst_feat )

    # Write a feature without a linetype name - it will be created.
    dst_feat = ogr.Feature( feature_def = lyr.GetLayerDefn() )
    dst_feat.SetGeometryDirectly( ogr.CreateGeometryFromWkt('LINESTRING(5 5,40 30)') )
    dst_feat.SetStyleString( 'PEN(c:#ffff00,w:2g,p:"3.0g 4.0g")' )
    lyr.CreateFeature( dst_feat )

    ds = None

    # Reopen and check contents.

    ds = ogr.Open('tmp/dxf_18.dxf')

    lyr = ds.GetLayer(0)

    # Check first feature.
    feat = lyr.GetNextFeature()
    if feat.GetField('Linetype') != 'DASHED':
        gdaltest.post_reason( 'Got wrong linetype. (1)' )
        return 'fail'

    if feat.GetStyleString() != 'PEN(c:#ffff00,w:2g,p:"12.6999999999999993g 6.3499999999999996g")':
        print(feat.GetStyleString())
        gdaltest.post_reason( "got wrong style string (1)" )
        return 'fail'

    if ogrtest.check_feature_geometry( feat, 'LINESTRING (0 0,25 25)' ):
        return 'fail'

    # Check second feature.
    feat = lyr.GetNextFeature()
    if feat.GetField('Linetype') != 'DOTTED':
        gdaltest.post_reason( 'Got wrong linetype. (2)' )
        return 'fail'

    if feat.GetStyleString() != 'PEN(c:#ffff00,w:2g,p:"0.0g 4.0g")':
        print(feat.GetStyleString())
        gdaltest.post_reason( "got wrong style string (2)" )
        return 'fail'

    if ogrtest.check_feature_geometry( feat, 'LINESTRING (5 5,30 30)' ):
        return 'fail'

    # Check third feature.
    feat = lyr.GetNextFeature()
    if feat.GetField('Linetype') != 'AutoLineType-1':
        gdaltest.post_reason( 'Got wrong linetype. (3)' )
        return 'fail'

    if feat.GetStyleString() != 'PEN(c:#ffff00,w:2g,p:"3.0g 4.0g")':
        print(feat.GetStyleString())
        gdaltest.post_reason( "got wrong style string (3)" )
        return 'fail'

    if ogrtest.check_feature_geometry( feat, 'LINESTRING (5 5,40 30)' ):
        return 'fail'

    # Cleanup

    lyr = None
    ds = None

    os.unlink( 'tmp/dxf_18.dxf' )

    return 'success'
def ogr_factory_8():

    tests = [
        ('POINT(2 5)', 'MULTIPOINT (2 5)', ogr.wkbMultiPoint),
        ('LINESTRING(2 5,10 20)', 'LINESTRING(2 5,10 20)', ogr.wkbLineString),
        ('LINESTRING(2 5,10 20)', 'COMPOUNDCURVE ((2 5,10 20))',
         ogr.wkbCompoundCurve),
        ('LINESTRING(2 5,10 20)', 'MULTILINESTRING ((2 5,10 20))',
         ogr.wkbMultiLineString),
        ('LINESTRING(2 5,10 20)', 'MULTICURVE ((2 5,10 20))',
         ogr.wkbMultiCurve),
        ('LINESTRING(2 5,10 20)', None, ogr.wkbPolygon),
        ('LINESTRING(2 5,10 20)', None, ogr.wkbCurvePolygon),
        ('LINESTRING(2 5,10 20)', None, ogr.wkbMultiSurface),
        ('LINESTRING(2 5,10 20)', None, ogr.wkbMultiPolygon),
        ('LINESTRING(0 0,0 1,1 1,0 0)', 'POLYGON ((0 0,0 1,1 1,0 0))',
         ogr.wkbPolygon),
        ('LINESTRING(0 0,0 1,1 1,0 0)', 'CURVEPOLYGON ((0 0,0 1,1 1,0 0))',
         ogr.wkbCurvePolygon),
        ('LINESTRING(0 0,0 1,1 1,0 0)', 'MULTIPOLYGON (((0 0,0 1,1 1,0 0)))',
         ogr.wkbMultiPolygon),
        ('LINESTRING(0 0,0 1,1 1,0 0)', 'MULTISURFACE (((0 0,0 1,1 1,0 0)))',
         ogr.wkbMultiSurface),
        ('LINESTRING EMPTY', 'COMPOUNDCURVE EMPTY', ogr.wkbCompoundCurve),
        ('LINESTRING EMPTY', 'MULTILINESTRING EMPTY', ogr.wkbMultiLineString),
        ('LINESTRING EMPTY', 'MULTICURVE EMPTY', ogr.wkbMultiCurve),
        ('MULTILINESTRING ((2 5,10 20))', 'LINESTRING(2 5,10 20)',
         ogr.wkbLineString),
        ('MULTILINESTRING ((2 5,10 20))', 'COMPOUNDCURVE ((2 5,10 20))',
         ogr.wkbCompoundCurve),
        ('MULTILINESTRING ((2 5,10 20))', 'MULTICURVE ((2 5,10 20))',
         ogr.wkbMultiCurve),
        ('MULTILINESTRING ((2 5,10 20))', None, ogr.wkbPolygon),
        ('MULTILINESTRING ((2 5,10 20))', None, ogr.wkbCurvePolygon),
        ('MULTILINESTRING ((2 5,10 20))', None, ogr.wkbMultiPolygon),
        ('MULTILINESTRING ((2 5,10 20))', None, ogr.wkbMultiSurface),
        ('MULTILINESTRING ((0 0,0 1,1 1,0 0))', 'POLYGON ((0 0,0 1,1 1,0 0))',
         ogr.wkbPolygon),
        ('MULTILINESTRING ((0 0,0 1,1 1,0 0))',
         'CURVEPOLYGON ((0 0,0 1,1 1,0 0))', ogr.wkbCurvePolygon),
        ('MULTILINESTRING ((0 0,0 1,1 1,0 0))',
         'MULTIPOLYGON (((0 0,0 1,1 1,0 0)))', ogr.wkbMultiPolygon),
        ('MULTILINESTRING ((0 0,0 1,1 1,0 0))',
         'MULTISURFACE (((0 0,0 1,1 1,0 0)))', ogr.wkbMultiSurface),
        ('MULTILINESTRING EMPTY', 'LINESTRING EMPTY', ogr.wkbLineString),
        ('MULTILINESTRING EMPTY', 'COMPOUNDCURVE EMPTY', ogr.wkbCompoundCurve),
        ('MULTILINESTRING EMPTY', 'MULTICURVE EMPTY', ogr.wkbMultiCurve),
        ('CIRCULARSTRING(0 0,1 0,0 0)',
         'COMPOUNDCURVE (CIRCULARSTRING (0 0,1 0,0 0))', ogr.wkbCompoundCurve),
        ('CIRCULARSTRING(0 0,1 0,0 0)',
         'MULTICURVE (CIRCULARSTRING (0 0,1 0,0 0))', ogr.wkbMultiCurve),
        ('CIRCULARSTRING(0 0,1 0,0 0)',
         'CURVEPOLYGON (CIRCULARSTRING (0 0,1 0,0 0))', ogr.wkbCurvePolygon),
        ('CIRCULARSTRING(0 0,1 0,0 0)',
         'POLYGON ((0 0,0.116977778440514 -0.321393804843282,0.413175911166547 -0.49240387650611,0.75 -0.433012701892224,0.969846310392967 -0.171010071662835,0.969846310392967 0.171010071662835,0.75 0.433012701892224,0.413175911166547 0.49240387650611,0.116977778440514 0.321393804843282,0 0))',
         ogr.wkbPolygon),
        ('CIRCULARSTRING(0 0,1 0,0 0)',
         'MULTIPOLYGON (((0 0,0.116977778440514 -0.321393804843282,0.413175911166547 -0.49240387650611,0.75 -0.433012701892224,0.969846310392967 -0.171010071662835,0.969846310392967 0.171010071662835,0.75 0.433012701892224,0.413175911166547 0.49240387650611,0.116977778440514 0.321393804843282,0 0)))',
         ogr.wkbMultiPolygon),
        ('CIRCULARSTRING(0 0,1 0,0 0)',
         'MULTISURFACE (CURVEPOLYGON (CIRCULARSTRING (0 0,1 0,0 0)))',
         ogr.wkbMultiSurface),
        ('CIRCULARSTRING(0 0,1 0,0 0)',
         'LINESTRING (0 0,0.116977778440514 -0.321393804843282,0.413175911166547 -0.49240387650611,0.75 -0.433012701892224,0.969846310392967 -0.171010071662835,0.969846310392967 0.171010071662835,0.75 0.433012701892224,0.413175911166547 0.49240387650611,0.116977778440514 0.321393804843282,0 0)',
         ogr.wkbLineString),

        # Degenerated case
        ('CIRCULARSTRING(0 0,0 0,0 0)', 'LINESTRING (0 0,0 0,0 0)',
         ogr.wkbLineString),
        ('CIRCULARSTRING(0 0,1 1,2 2)', 'LINESTRING (0 0,1 1,2 2)',
         ogr.wkbLineString),
        ('CIRCULARSTRING(0 0,1 1,2 2)', 'MULTILINESTRING ((0 0,1 1,2 2))',
         ogr.wkbMultiLineString),
        ('CIRCULARSTRING(0 0,1 1,2 2)', None, ogr.wkbPolygon),
        ('CIRCULARSTRING(0 0,1 1,2 2)', None, ogr.wkbCurvePolygon),
        ('CIRCULARSTRING(0 0,1 1,2 2)', None, ogr.wkbMultiSurface),
        ('CIRCULARSTRING(0 0,1 1,2 2)', None, ogr.wkbMultiPolygon),
        ('COMPOUNDCURVE ((2 5,10 20))', 'LINESTRING(2 5,10 20)',
         ogr.wkbLineString),
        ('COMPOUNDCURVE (CIRCULARSTRING(0 0,1 1,2 2))',
         'LINESTRING (0 0,1 1,2 2)', ogr.wkbLineString),
        ('COMPOUNDCURVE ((2 5,10 20),(10 20,30 40))',
         'LINESTRING(2 5,10 20,30 40)', ogr.wkbLineString),
        ('COMPOUNDCURVE ((2 5,10 20),(10 20,30 40))',
         'MULTILINESTRING((2 5,10 20,30 40))', ogr.wkbMultiLineString),
        ('COMPOUNDCURVE ((2 5,10 20),(10 20,30 40))',
         'MULTICURVE (COMPOUNDCURVE ((2 5,10 20),(10 20,30 40)))',
         ogr.wkbMultiCurve),
        ('COMPOUNDCURVE (CIRCULARSTRING(0 0,1 0,0 0))',
         'CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (0 0,1 0,0 0)))',
         ogr.wkbCurvePolygon),
        ('COMPOUNDCURVE (CIRCULARSTRING(0 0,1 0,0 0))',
         'POLYGON ((0 0,0.116977778440514 -0.321393804843282,0.413175911166547 -0.49240387650611,0.75 -0.433012701892224,0.969846310392967 -0.171010071662835,0.969846310392967 0.171010071662835,0.75 0.433012701892224,0.413175911166547 0.49240387650611,0.116977778440514 0.321393804843282,0 0))',
         ogr.wkbPolygon),
        ('COMPOUNDCURVE (CIRCULARSTRING(0 0,1 0,0 0))',
         'MULTISURFACE (CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (0 0,1 0,0 0))))',
         ogr.wkbMultiSurface),
        ('COMPOUNDCURVE (CIRCULARSTRING(0 0,1 0,0 0))',
         'MULTIPOLYGON (((0 0,0.116977778440514 -0.321393804843282,0.413175911166547 -0.49240387650611,0.75 -0.433012701892224,0.969846310392967 -0.171010071662835,0.969846310392967 0.171010071662835,0.75 0.433012701892224,0.413175911166547 0.49240387650611,0.116977778440514 0.321393804843282,0 0)))',
         ogr.wkbMultiPolygon),
        ('COMPOUNDCURVE (CIRCULARSTRING(0 0,1 0,0 0))',
         'LINESTRING (0 0,0.116977778440514 -0.321393804843282,0.413175911166547 -0.49240387650611,0.75 -0.433012701892224,0.969846310392967 -0.171010071662835,0.969846310392967 0.171010071662835,0.75 0.433012701892224,0.413175911166547 0.49240387650611,0.116977778440514 0.321393804843282,0 0)',
         ogr.wkbLineString),
        ('COMPOUNDCURVE((0 0,0 1,1 1,0 0))', 'POLYGON ((0 0,0 1,1 1,0 0))',
         ogr.wkbPolygon),
        ('COMPOUNDCURVE((0 0,0 1,1 1,0 0))',
         'MULTIPOLYGON (((0 0,0 1,1 1,0 0)))', ogr.wkbMultiPolygon),
        ('COMPOUNDCURVE((0 0,0 1,1 1,0 0))',
         'MULTISURFACE (CURVEPOLYGON (COMPOUNDCURVE ((0 0,0 1,1 1,0 0))))',
         ogr.wkbMultiSurface),
        ('COMPOUNDCURVE((0 0,0 1,1 1,0 0))',
         'CURVEPOLYGON (COMPOUNDCURVE((0 0,0 1,1 1,0 0)))',
         ogr.wkbCurvePolygon),
        ('POLYGON ((0 0,0 1,1 1,0 0))', 'MULTIPOLYGON (((0 0,0 1,1 1,0 0)))',
         ogr.wkbMultiPolygon),
        ('POLYGON ((0 0,0 1,1 1,0 0))', 'MULTISURFACE (((0 0,0 1,1 1,0 0)))',
         ogr.wkbMultiSurface),
        ('POLYGON ((0 0,0 1,1 1,0 0))', 'CURVEPOLYGON ((0 0,0 1,1 1,0 0))',
         ogr.wkbCurvePolygon),
        ('POLYGON ((0 0,0 1,1 1,0 0),(0.25 0.25,0.25 0.75,0.75 0.75,0.25 0.25))',
         'CURVEPOLYGON ((0 0,0 1,1 1,0 0),(0.25 0.25,0.25 0.75,0.75 0.75,0.25 0.25))',
         ogr.wkbCurvePolygon),
        ('POLYGON ((0 0,0 1,1 1,0 0))', 'LINESTRING (0 0,0 1,1 1,0 0)',
         ogr.wkbLineString),
        ('POLYGON ((0 0,0 1,1 1,0 0))', 'COMPOUNDCURVE ((0 0,0 1,1 1,0 0))',
         ogr.wkbCompoundCurve),
        ('CURVEPOLYGON ((0 0,0 1,1 1,0 0))', 'POLYGON ((0 0,0 1,1 1,0 0))',
         ogr.wkbPolygon),
        ('CURVEPOLYGON ((0 0,0 1,1 1,0 0))',
         'MULTIPOLYGON (((0 0,0 1,1 1,0 0)))', ogr.wkbMultiPolygon),
        ('CURVEPOLYGON ((0 0,0 1,1 1,0 0))',
         'MULTISURFACE (CURVEPOLYGON((0 0,0 1,1 1,0 0)))',
         ogr.wkbMultiSurface),
        ('CURVEPOLYGON ((0 0,0 1,1 1,0 0))',
         'CURVEPOLYGON ((0 0,0 1,1 1,0 0))', ogr.wkbCurvePolygon),
        ('CURVEPOLYGON ((0 0,0 1,1 1,0 0))', 'LINESTRING (0 0,0 1,1 1,0 0)',
         ogr.wkbLineString),
        ('CURVEPOLYGON ((0 0,0 1,1 1,0 0))',
         'COMPOUNDCURVE ((0 0,0 1,1 1,0 0))', ogr.wkbCompoundCurve),
        ('CURVEPOLYGON ((0 0,0 1,1 1,0 0))',
         'MULTILINESTRING ((0 0,0 1,1 1,0 0))', ogr.wkbMultiLineString),
        ('CURVEPOLYGON ((0 0,0 1,1 1,0 0))', 'MULTICURVE ((0 0,0 1,1 1,0 0))',
         ogr.wkbMultiCurve),
        ('CURVEPOLYGON (COMPOUNDCURVE((0 0,0 1,1 1,0 0)))',
         'POLYGON ((0 0,0 1,1 1,0 0))', ogr.wkbPolygon),
        ('CURVEPOLYGON (COMPOUNDCURVE((0 0,0 1,1 1,0 0)))',
         'MULTIPOLYGON (((0 0,0 1,1 1,0 0)))', ogr.wkbMultiPolygon),
        ('CURVEPOLYGON (COMPOUNDCURVE((0 0,0 1,1 1,0 0)))',
         'MULTISURFACE (CURVEPOLYGON (COMPOUNDCURVE ((0 0,0 1,1 1,0 0))))',
         ogr.wkbMultiSurface),
        ('CURVEPOLYGON (COMPOUNDCURVE((0 0,0 1,1 1,0 0)))',
         'CURVEPOLYGON (COMPOUNDCURVE((0 0,0 1,1 1,0 0)))',
         ogr.wkbCurvePolygon),
        ('CURVEPOLYGON (COMPOUNDCURVE((0 0,0 1,1 1,0 0)))',
         'LINESTRING (0 0,0 1,1 1,0 0)', ogr.wkbLineString),
        ('CURVEPOLYGON (COMPOUNDCURVE((0 0,0 1,1 1,0 0)))',
         'COMPOUNDCURVE ((0 0,0 1,1 1,0 0))', ogr.wkbCompoundCurve),
        ('CURVEPOLYGON (COMPOUNDCURVE((0 0,0 1),(0 1,1 1,0 0)))',
         'POLYGON ((0 0,0 1,1 1,0 0))', ogr.wkbPolygon),
        ('CURVEPOLYGON (CIRCULARSTRING(0 0,1 0,0 0))',
         'POLYGON ((0 0,0.116977778440514 -0.321393804843282,0.413175911166547 -0.49240387650611,0.75 -0.433012701892224,0.969846310392967 -0.171010071662835,0.969846310392967 0.171010071662835,0.75 0.433012701892224,0.413175911166547 0.49240387650611,0.116977778440514 0.321393804843282,0 0))',
         ogr.wkbPolygon),
        ('CURVEPOLYGON (CIRCULARSTRING(0 0,1 0,0 0))',
         'MULTISURFACE (CURVEPOLYGON ( CIRCULARSTRING (0 0,1 0,0 0)))',
         ogr.wkbMultiSurface),
        ('CURVEPOLYGON (CIRCULARSTRING(0 0,1 0,0 0))',
         'MULTIPOLYGON (((0 0,0.116977778440514 -0.321393804843282,0.413175911166547 -0.49240387650611,0.75 -0.433012701892224,0.969846310392967 -0.171010071662835,0.969846310392967 0.171010071662835,0.75 0.433012701892224,0.413175911166547 0.49240387650611,0.116977778440514 0.321393804843282,0 0)))',
         ogr.wkbMultiPolygon),
        ('CURVEPOLYGON (CIRCULARSTRING(0 0,1 0,0 0))',
         'COMPOUNDCURVE (CIRCULARSTRING (0 0,1 0,0 0))', ogr.wkbCompoundCurve),
        ('CURVEPOLYGON (CIRCULARSTRING(0 0,1 0,0 0))',
         'MULTICURVE (CIRCULARSTRING (0 0,1 0,0 0))', ogr.wkbMultiCurve),
        ('CURVEPOLYGON (CIRCULARSTRING(0 0,1 0,0 0))',
         'MULTILINESTRING ((0 0,0.116977778440514 -0.321393804843282,0.413175911166547 -0.49240387650611,0.75 -0.433012701892224,0.969846310392967 -0.171010071662835,0.969846310392967 0.171010071662835,0.75 0.433012701892224,0.413175911166547 0.49240387650611,0.116977778440514 0.321393804843282,0 0))',
         ogr.wkbMultiLineString),
        ('MULTICURVE ((2 5,10 20))', 'LINESTRING(2 5,10 20)',
         ogr.wkbLineString),
        ('MULTICURVE ((2 5,10 20))', 'COMPOUNDCURVE ((2 5,10 20))',
         ogr.wkbCompoundCurve),
        ('MULTICURVE ((2 5,10 20))', 'MULTILINESTRING ((2 5,10 20))',
         ogr.wkbMultiLineString),
        ('MULTICURVE (COMPOUNDCURVE((2 5,10 20)))', 'LINESTRING(2 5,10 20)',
         ogr.wkbLineString),
        ('MULTICURVE (COMPOUNDCURVE((2 5,10 20)))',
         'COMPOUNDCURVE ((2 5,10 20))', ogr.wkbCompoundCurve),
        ('MULTICURVE (COMPOUNDCURVE((2 5,10 20)))',
         'MULTILINESTRING ((2 5,10 20))', ogr.wkbMultiLineString),
        ('MULTICURVE ((0 0,0 1,1 1,0 0))', 'POLYGON ((0 0,0 1,1 1,0 0))',
         ogr.wkbPolygon),
        ('MULTICURVE ((0 0,0 1,1 1,0 0))', 'CURVEPOLYGON ((0 0,0 1,1 1,0 0))',
         ogr.wkbCurvePolygon),
        ('MULTICURVE ((0 0,0 1,1 1,0 0))',
         'MULTIPOLYGON (((0 0,0 1,1 1,0 0)))', ogr.wkbMultiPolygon),
        ('MULTICURVE ((0 0,0 1,1 1,0 0))',
         'MULTISURFACE (((0 0,0 1,1 1,0 0)))', ogr.wkbMultiSurface),
        ('MULTICURVE (COMPOUNDCURVE((0 0,0 1,1 1,0 0)))',
         'MULTIPOLYGON (((0 0,0 1,1 1,0 0)))', ogr.wkbMultiPolygon),
        ('MULTICURVE (COMPOUNDCURVE((0 0,0 1,1 1,0 0)))',
         'MULTISURFACE (CURVEPOLYGON (COMPOUNDCURVE ((0 0,0 1,1 1,0 0))))',
         ogr.wkbMultiSurface),
        ('MULTIPOLYGON (((0 0,0 1,1 1,0 0)))',
         'MULTIPOLYGON (((0 0,0 1,1 1,0 0)))', ogr.wkbUnknown),
        ('MULTIPOLYGON (((0 0,0 1,1 1,0 0)))',
         'MULTISURFACE (((0 0,0 1,1 1,0 0)))', ogr.wkbMultiSurface),
        ('MULTIPOLYGON (((0 0,0 1,1 1,0 0)))',
         'CURVEPOLYGON ((0 0,0 1,1 1,0 0))', ogr.wkbCurvePolygon),
        ('MULTIPOLYGON (((0 0,0 1,1 1,0 0),(0.25 0.25,0.25 0.75,0.75 0.75,0.25 0.25)))',
         'CURVEPOLYGON ((0 0,0 1,1 1,0 0),(0.25 0.25,0.25 0.75,0.75 0.75,0.25 0.25))',
         ogr.wkbCurvePolygon),
        ('MULTIPOLYGON (((0 0,0 1,1 1,0 0)))', 'LINESTRING (0 0,0 1,1 1,0 0)',
         ogr.wkbLineString),
        ('MULTIPOLYGON (((0 0,0 1,1 1,0 0)))',
         'COMPOUNDCURVE ((0 0,0 1,1 1,0 0))', ogr.wkbCompoundCurve),
        ('MULTIPOLYGON (((0 0,0 1,1 1,0 0)))',
         'MULTILINESTRING ((0 0,0 1,1 1,0 0))', ogr.wkbMultiLineString),
        ('MULTIPOLYGON (((0 0,0 1,1 1,0 0)))',
         'MULTICURVE ((0 0,0 1,1 1,0 0))', ogr.wkbMultiCurve),
        ('MULTISURFACE (((0 0,0 1,1 1,0 0)))',
         'MULTIPOLYGON (((0 0,0 1,1 1,0 0)))', ogr.wkbMultiPolygon),
        ('MULTISURFACE (((0 0,0 1,1 1,0 0)))',
         'CURVEPOLYGON ((0 0,0 1,1 1,0 0))', ogr.wkbCurvePolygon),
        ('MULTISURFACE (((0 0,0 1,1 1,0 0),(0.25 0.25,0.25 0.75,0.75 0.75,0.25 0.25)))',
         'CURVEPOLYGON ((0 0,0 1,1 1,0 0),(0.25 0.25,0.25 0.75,0.75 0.75,0.25 0.25))',
         ogr.wkbCurvePolygon),
        ('MULTISURFACE (((0 0,0 1,1 1,0 0)))', 'LINESTRING (0 0,0 1,1 1,0 0)',
         ogr.wkbLineString),
        ('MULTISURFACE (((0 0,0 1,1 1,0 0)))',
         'COMPOUNDCURVE ((0 0,0 1,1 1,0 0))', ogr.wkbCompoundCurve),
        ('MULTISURFACE (((0 0,0 1,1 1,0 0)))',
         'MULTILINESTRING ((0 0,0 1,1 1,0 0))', ogr.wkbMultiLineString),
        ('MULTISURFACE (((0 0,0 1,1 1,0 0)))',
         'MULTICURVE ((0 0,0 1,1 1,0 0))', ogr.wkbMultiCurve),
        ('MULTISURFACE (CURVEPOLYGON((0 0,0 1,1 1,0 0)))',
         'MULTIPOLYGON (((0 0,0 1,1 1,0 0)))', ogr.wkbMultiPolygon),
        ('MULTISURFACE (CURVEPOLYGON((0 0,0 1,1 1,0 0)))',
         'CURVEPOLYGON ((0 0,0 1,1 1,0 0))', ogr.wkbCurvePolygon),
        ('MULTISURFACE (CURVEPOLYGON((0 0,0 1,1 1,0 0),(0.25 0.25,0.25 0.75,0.75 0.75,0.25 0.25)))',
         'CURVEPOLYGON ((0 0,0 1,1 1,0 0),(0.25 0.25,0.25 0.75,0.75 0.75,0.25 0.25))',
         ogr.wkbCurvePolygon),
        ('MULTISURFACE (CURVEPOLYGON((0 0,0 1,1 1,0 0)))',
         'LINESTRING (0 0,0 1,1 1,0 0)', ogr.wkbLineString),
        ('MULTISURFACE (CURVEPOLYGON((0 0,0 1,1 1,0 0)))',
         'COMPOUNDCURVE ((0 0,0 1,1 1,0 0))', ogr.wkbCompoundCurve),
        ('MULTISURFACE (CURVEPOLYGON(CIRCULARSTRING(0 0,1 0,0 0)))',
         'COMPOUNDCURVE (CIRCULARSTRING (0 0,1 0,0 0))', ogr.wkbCompoundCurve),
        ('MULTISURFACE (CURVEPOLYGON((0 0,0 1,1 1,0 0)))',
         'MULTILINESTRING ((0 0,0 1,1 1,0 0))', ogr.wkbMultiLineString),
        ('MULTISURFACE (CURVEPOLYGON((0 0,0 1,1 1,0 0)))',
         'MULTICURVE ((0 0,0 1,1 1,0 0))', ogr.wkbMultiCurve),
        ('MULTISURFACE (CURVEPOLYGON(CIRCULARSTRING(0 0,1 0,0 0)))',
         'MULTICURVE (CIRCULARSTRING (0 0,1 0,0 0))', ogr.wkbMultiCurve),
        ('MULTIPOINT (2 5)', 'POINT(2 5)', ogr.wkbPoint),
    ]
    for (src_wkt, exp_wkt, target_type) in tests:

        src_geom = ogr.CreateGeometryFromWkt(src_wkt)
        gdal.SetConfigOption('OGR_ARC_STEPSIZE', '45')
        dst_geom = ogr.ForceTo(src_geom, target_type)
        gdal.SetConfigOption('OGR_ARC_STEPSIZE', None)

        if exp_wkt is None:
            exp_wkt = src_wkt
        elif target_type != ogr.wkbUnknown and dst_geom.GetGeometryType(
        ) != target_type:
            gdaltest.post_reason('fail')
            print(src_wkt)
            print(target_type)
            print(dst_geom.ExportToWkt())
            return 'fail'

        if ogrtest.check_feature_geometry(dst_geom, exp_wkt):
            gdaltest.post_reason('fail')
            print(src_wkt)
            print(target_type)
            print(dst_geom.ExportToWkt())
            return 'fail'

    return 'success'
Ejemplo n.º 33
0
def ogr_pgeo_1(tested_driver='PGeo', other_driver='MDB'):

    ogrtest.pgeo_ds = None

    try:
        ogrtest.other_driver = ogr.GetDriverByName(other_driver)
    except:
        ogrtest.other_driver = None
    if ogrtest.other_driver is not None:
        print('Unregistering %s driver' % ogrtest.other_driver.GetName())
        ogrtest.other_driver.Deregister()
        if other_driver == 'PGeo':
            # Re-register Geomedia and WALK at the end, *after* MDB
            geomedia_driver = ogr.GetDriverByName('Geomedia')
            if geomedia_driver is not None:
                geomedia_driver.Deregister()
                geomedia_driver.Register()
            walk_driver = ogr.GetDriverByName('WALK')
            if walk_driver is not None:
                walk_driver.Deregister()
                walk_driver.Register()

    try:
        drv = ogr.GetDriverByName(tested_driver)
    except:
        drv = None

    if drv is None:
        return 'skip'

    if not gdaltest.download_file(
            'http://download.osgeo.org/gdal/data/pgeo/PGeoTest.zip',
            'PGeoTest.zip'):
        return 'skip'

    try:
        os.stat('tmp/cache/Autodesk Test.mdb')
    except OSError:
        try:
            gdaltest.unzip('tmp/cache', 'tmp/cache/PGeoTest.zip')
            try:
                os.stat('tmp/cache/Autodesk Test.mdb')
            except OSError:
                return 'skip'
        except:
            return 'skip'

    ogrtest.pgeo_ds = ogr.Open('tmp/cache/Autodesk Test.mdb')
    if ogrtest.pgeo_ds is None:
        gdaltest.post_reason(
            'could not open DB. Driver probably misconfigured')
        return 'skip'

    if ogrtest.pgeo_ds.GetLayerCount() != 3:
        gdaltest.post_reason('did not get expected layer count')
        return 'fail'

    lyr = ogrtest.pgeo_ds.GetLayer(0)
    feat = lyr.GetNextFeature()
    if feat.GetField('OBJECTID') != 1 or \
       feat.GetField('IDNUM') != 9424 or \
       feat.GetField('OWNER') != 'City':
        gdaltest.post_reason('did not get expected attributes')
        feat.DumpReadable()
        return 'fail'

    if ogrtest.check_feature_geometry(
            feat,
            'LINESTRING (1910941.703951031 445833.57942859828 0,1910947.927691862 445786.43811868131 0)',
            max_error=0.0000001) != 0:
        gdaltest.post_reason('did not get expected geometry')
        feat.DumpReadable()
        return 'fail'

    feat_count = lyr.GetFeatureCount()
    if feat_count != 9418:
        gdaltest.post_reason('did not get expected feature count')
        print(feat_count)
        return 'fail'

    return 'success'
Ejemplo n.º 34
0
def ogr_pdf_2(name='tmp/ogr_pdf_1.pdf', has_attributes=True):

    # Check read support
    gdal_pdf_drv = gdal.GetDriverByName('PDF')
    md = gdal_pdf_drv.GetMetadata()
    if not 'HAVE_POPPLER' in md and not 'HAVE_PODOFO' in md:
        return 'skip'

    ds = ogr.Open(name)
    if ds is None:
        gdaltest.post_reason('fail')
        return 'fail'

    lyr = ds.GetLayerByName('first_layer')
    if lyr is None:
        gdaltest.post_reason('fail')
        return 'fail'

    if has_attributes:
        if lyr.GetLayerDefn().GetFieldDefn(0).GetType() != ogr.OFTString:
            return 'fail'
        if lyr.GetLayerDefn().GetFieldDefn(1).GetType() != ogr.OFTInteger:
            return 'fail'
        if lyr.GetLayerDefn().GetFieldDefn(2).GetType() != ogr.OFTReal:
            return 'fail'
    else:
        if lyr.GetLayerDefn().GetFieldCount() != 0:
            return 'fail'

    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry(
            feat, ogr.CreateGeometryFromWkt('POINT(2 49)')) != 0:
        gdaltest.post_reason('fail')
        return 'fail'

    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry(
            feat, ogr.CreateGeometryFromWkt('LINESTRING(2 48,3 50)')) != 0:
        return 'fail'

    if has_attributes:
        if feat.GetField('strfield') != 'str':
            gdaltest.post_reason('fail')
            return 'fail'
        if feat.GetField('intfield') != 1:
            gdaltest.post_reason('fail')
            return 'fail'
        if abs(feat.GetFieldAsDouble('realfield') - 2.34) > 1e-10:
            gdaltest.post_reason('fail')
            print(feat.GetFieldAsDouble('realfield'))
            return 'fail'

    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry(
            feat,
            ogr.CreateGeometryFromWkt(
                'POLYGON((2 48,2 49,3 49,3 48,2 48))')) != 0:
        gdaltest.post_reason('fail')
        return 'fail'

    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry(
            feat,
            ogr.CreateGeometryFromWkt(
                'POLYGON((2 48,2 49,3 49,3 48,2 48),(2.25 48.25,2.25 48.75,2.75 48.75,2.75 48.25,2.25 48.25))'
            )) != 0:
        gdaltest.post_reason('fail')
        return 'fail'

    for i in range(10):
        feat = lyr.GetNextFeature()
        if ogrtest.check_feature_geometry(
                feat,
                ogr.CreateGeometryFromWkt('POINT(%f 49.1)' %
                                          (2 + i * 0.05))) != 0:
            gdaltest.post_reason('fail with ogr-sym-%d' % i)
            return 'fail'

    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry(
            feat, ogr.CreateGeometryFromWkt('POINT(2.5 49.1)')) != 0:
        gdaltest.post_reason('fail with raster icon')
        return 'fail'

    ds = None

    return 'success'
Ejemplo n.º 35
0
def ogr_idrisi_3():

    ds = ogr.Open('data/polygons.vct')
    if ds is None:
        gdaltest.post_reason('fail')
        return 'fail'

    lyr = ds.GetLayer(0)
    if lyr.GetGeomType() != ogr.wkbPolygon:
        gdaltest.post_reason('fail')
        return 'fail'

    if lyr.GetFeatureCount() != 2:
        gdaltest.post_reason('fail')
        return 'fail'

    if lyr.TestCapability(ogr.OLCFastFeatureCount) != 1:
        gdaltest.post_reason('fail')
        return 'fail'

    if lyr.TestCapability(ogr.OLCFastGetExtent) != 1:
        gdaltest.post_reason('fail')
        return 'fail'

    if lyr.GetExtent() != (400000.0, 600000.0, 4000000.0, 5000000.0):
        gdaltest.post_reason('fail')
        print(lyr.GetExtent())
        return 'fail'

    feat = lyr.GetNextFeature()
    if feat.GetFieldAsDouble(0) != 1.0:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    if ogrtest.check_feature_geometry(
            feat,
            ogr.CreateGeometryFromWkt(
                'POLYGON ((400000 4000000,400000 5000000,600000 5000000,600000 4000000,400000 4000000),(450000 4250000,450000 4750000,550000 4750000,550000 4250000,450000 4250000))'
            )) != 0:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    feat = lyr.GetNextFeature()
    if feat.GetFieldAsDouble(0) != 2.0:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    if ogrtest.check_feature_geometry(
            feat,
            ogr.CreateGeometryFromWkt(
                'POLYGON ((400000 4000000,400000 5000000,600000 5000000,600000 4000000,400000 4000000))'
            )) != 0:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    lyr.SetSpatialFilterRect(0, 0, 1, 1)
    lyr.ResetReading()
    feat = lyr.GetNextFeature()
    if feat is not None:
        gdaltest.post_reason('fail')
        return 'fail'

    ds = None

    return 'success'
Ejemplo n.º 36
0
def ogr_gtm_check_write_1():
    if not gdaltest.have_gtm:
        return 'skip'

    ds = ogr.Open('tmp/gtm.gtm')
    lyr = ds.GetLayerByName('gtm_waypoints')
    if lyr.GetFeatureCount() != 2:
        gdaltest.post_reason('Bad feature count.')
        return 'fail'

    # Test 1st waypoint
    feat = lyr.GetNextFeature()

    if feat.GetField('name') != 'WAY0000000':
        gdaltest.post_reason('Wrong name field value')
        return 'fail'

    if feat.GetField('comment') != 'Waypoint 0':
        gdaltest.post_reason('Wrong comment field value')
        return 'fail'

    if feat.GetField('icon') != 10:
        gdaltest.post_reason('Wrong icon field value')
        return 'fail'

    if feat.GetField('time') != '2009/12/23 14:25:46':
        gdaltest.post_reason('Wrong time field value')
        return 'fail'

    wkt = 'POINT (-21 -47)'
    if ogrtest.check_feature_geometry(feat, wkt):
        gdaltest.post_reason('Unexpected geometry')
        return 'fail'

    # Test 2nd waypoint
    feat = lyr.GetNextFeature()

    if feat.GetField('name') != 'WAY0000001':
        gdaltest.post_reason('Wrong name field value')
        return 'fail'

    if feat.GetField('comment') != 'Waypoint 1':
        gdaltest.post_reason('Wrong comment field value')
        return 'fail'

    if feat.GetField('icon') != 31:
        gdaltest.post_reason('Wrong icon field value')
        return 'fail'

    if feat.GetField('time') != None:
        gdaltest.post_reason('Wrong time field value')
        return 'fail'

    wkt = 'POINT (-21.123 -47.231 800)'
    if ogrtest.check_feature_geometry(feat, wkt):
        gdaltest.post_reason('Unexpected geometry')
        return 'fail'

    # Test tracks
    lyr = ds.GetLayerByName('gtm_tracks')
    if lyr.GetFeatureCount() != 4:  # The driver converts multiline
        # into one line for each tuple
        # element
        gdaltest.post_reason('Bad feature count.')
        return 'fail'

    # Test 1st track
    feat = lyr.GetNextFeature()

    if feat.GetField('name') != '1st Street':
        gdaltest.post_reason('Wrong name field value')
        return 'fail'

    if feat.GetField('type') != 2:
        gdaltest.post_reason('Wrong type field value')
        return 'fail'

    if feat.GetField('color') != 0x0000FF:
        gdaltest.post_reason('Wrong color field value')
        return 'fail'

    wkt = 'LINESTRING (-21.1 -47.1, -21.2 -47.2, -21.3 -47.3, -21.4 -47.4)'
    if ogrtest.check_feature_geometry(feat, wkt):
        gdaltest.post_reason('Unexpected geometry')
        return 'fail'

    # Test 2nd track
    feat = lyr.GetNextFeature()

    if feat.GetField('name') != '2nd Street':
        gdaltest.post_reason('Wrong name field value')
        return 'fail'

    if feat.GetField('type') != 1:
        gdaltest.post_reason('Wrong type field value')
        return 'fail'

    if feat.GetField('color') != 0x000000:
        gdaltest.post_reason('Wrong color field value')
        return 'fail'

    wkt = 'LINESTRING (-21.11 -47.1, -21.21 -47.2, -21.31 -47.3, -21.41 -47.4)'
    if ogrtest.check_feature_geometry(feat, wkt):
        gdaltest.post_reason('Unexpected geometry')
        return 'fail'

    # Test 3rd track
    feat = lyr.GetNextFeature()

    if feat.GetField('name') != '3rd Street':
        gdaltest.post_reason('Wrong name field value')
        return 'fail'

    if feat.GetField('type') != 2:
        gdaltest.post_reason('Wrong type field value')
        return 'fail'

    if feat.GetField('color') != 0x000000:
        gdaltest.post_reason('Wrong color field value')
        return 'fail'

    wkt = 'LINESTRING (-21.12 -47.1, -21.22 -47.2, -21.32 -47.3, -21.42 -47.4)'
    if ogrtest.check_feature_geometry(feat, wkt):
        gdaltest.post_reason('Unexpected geometry')
        return 'fail'

    # Test 4th track
    feat = lyr.GetNextFeature()

    if feat.GetField('name') != '3rd Street':
        gdaltest.post_reason('Wrong name field value')
        return 'fail'

    if feat.GetField('type') != 2:
        gdaltest.post_reason('Wrong type field value')
        return 'fail'

    if feat.GetField('color') != 0x000000:
        gdaltest.post_reason('Wrong color field value')
        return 'fail'

    wkt = 'LINESTRING (-21.12 -47.1, -21.02 -47.0, -20.92 -46.9)'
    if ogrtest.check_feature_geometry(feat, wkt):
        gdaltest.post_reason('Unexpected geometry')
        return 'fail'

    return 'success'
Ejemplo n.º 37
0
def ogr_pdf_2(name = 'tmp/ogr_pdf_1.pdf', has_attributes = True):

    if ogr.GetDriverByName('PDF') is None:
        return 'skip'

    # Check read support
    gdal_pdf_drv = gdal.GetDriverByName('PDF')
    md = gdal_pdf_drv.GetMetadata()
    if 'HAVE_POPPLER' not in md and 'HAVE_PODOFO' not in md and 'HAVE_PDFIUM' not in md:
        return 'skip'

    ds = ogr.Open(name)
    if ds is None:
        gdaltest.post_reason('fail')
        return 'fail'

    lyr = ds.GetLayerByName('first_layer')
    if lyr is None:
        gdaltest.post_reason('fail')
        return 'fail'

    if has_attributes:
        if lyr.GetLayerDefn().GetFieldDefn(lyr.GetLayerDefn().GetFieldIndex('strfield')).GetType() != ogr.OFTString:
            gdaltest.post_reason('fail')
            return 'fail'
        if lyr.GetLayerDefn().GetFieldDefn(lyr.GetLayerDefn().GetFieldIndex('intfield')).GetType() != ogr.OFTInteger:
            gdaltest.post_reason('fail')
            return 'fail'
        if lyr.GetLayerDefn().GetFieldDefn(lyr.GetLayerDefn().GetFieldIndex('realfield')).GetType() != ogr.OFTReal:
            gdaltest.post_reason('fail')
            return 'fail'
    else:
        if lyr.GetLayerDefn().GetFieldCount() != 0:
            gdaltest.post_reason('fail')
            return 'fail'

    if has_attributes:
        feat = lyr.GetNextFeature()
    # This won't work properly until text support is added to the
    # PDF vector feature reader
    #if ogrtest.check_feature_geometry(feat, ogr.CreateGeometryFromWkt('POINT(2 49)')) != 0:
    #    feat.DumpReadable()
    #    gdaltest.post_reason('fail')
    #    return 'fail'

    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry(feat, ogr.CreateGeometryFromWkt('LINESTRING(2 48,3 50)')) != 0:
        feat.DumpReadable()
        gdaltest.post_reason('fail')
        return 'fail'

    if has_attributes:
        if feat.GetField('strfield') != 'str':
            feat.DumpReadable()
            gdaltest.post_reason('fail')
            return 'fail'
        if feat.GetField('intfield') != 1:
            feat.DumpReadable()
            gdaltest.post_reason('fail')
            return 'fail'
        if abs(feat.GetFieldAsDouble('realfield') - 2.34) > 1e-10:
            feat.DumpReadable()
            gdaltest.post_reason('fail')
            return 'fail'

    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry(feat, ogr.CreateGeometryFromWkt('POLYGON((2 48,2 49,3 49,3 48,2 48))')) != 0:
        feat.DumpReadable()
        gdaltest.post_reason('fail')
        return 'fail'

    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry(feat, ogr.CreateGeometryFromWkt('POLYGON((2 48,2 49,3 49,3 48,2 48),(2.25 48.25,2.25 48.75,2.75 48.75,2.75 48.25,2.25 48.25))')) != 0:
        feat.DumpReadable()
        gdaltest.post_reason('fail')
        return 'fail'

    for i in range(10):
        feat = lyr.GetNextFeature()
        if ogrtest.check_feature_geometry(feat, ogr.CreateGeometryFromWkt('POINT(%f 49.1)' % (2 + i * 0.05))) != 0:
            feat.DumpReadable()
            gdaltest.post_reason('fail with ogr-sym-%d' % i)
            return 'fail'

    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry(feat, ogr.CreateGeometryFromWkt('POINT(2.5 49.1)')) != 0:
        feat.DumpReadable()
        gdaltest.post_reason('fail with raster icon')
        return 'fail'

    ds = None

    return 'success'
Ejemplo n.º 38
0
def ogr_tiger_4():

    if ogrtest.tiger_ds is None:
        return 'skip'

    # load all the files into memory.
    for file in gdal.ReadDir('tmp/cache/TGR01001'):

        if file[0] == '.':
            continue

        data = open('tmp/cache/TGR01001/'+file,'r').read()

        f = gdal.VSIFOpenL('/vsimem/tigertest/'+file, 'wb')
        gdal.VSIFWriteL(data, 1, len(data), f)
        gdal.VSIFCloseL(f)

    # Try reading.
    ogrtest.tiger_ds = ogr.Open('/vsimem/tigertest/TGR01001.RT1')
    if ogrtest.tiger_ds is None:
        gdaltest.post_reason('fail to open.')
        return 'fail'

    ogrtest.tiger_ds = None
    # also test opening with a filename (#4443)
    ogrtest.tiger_ds = ogr.Open('tmp/cache/TGR01001/TGR01001.RT1')
    if ogrtest.tiger_ds is None:
        gdaltest.post_reason('fail')
        return 'fail'

    # Check a few features.
    cc_layer = ogrtest.tiger_ds.GetLayerByName('CompleteChain')
    if cc_layer.GetFeatureCount() != 19289:
        gdaltest.post_reason( 'wrong cc feature count' )
        return 'fail'

    feat = cc_layer.GetNextFeature()
    feat = cc_layer.GetNextFeature()
    feat = cc_layer.GetNextFeature()

    if feat.TLID != 2833200 or feat.FRIADDL != None or feat.BLOCKL != 5000:
        gdaltest.post_reason( 'wrong attribute on cc feature.' )
        return 'fail'

    if ogrtest.check_feature_geometry( feat, 'LINESTRING (-86.4402 32.504137,-86.440313 32.504009,-86.440434 32.503884,-86.440491 32.503805,-86.44053 32.503757,-86.440578 32.503641,-86.440593 32.503515,-86.440588 32.503252,-86.440596 32.50298)', max_error = 0.000001 ) != 0:
        return 'fail'

    feat = ogrtest.tiger_ds.GetLayerByName('TLIDRange').GetNextFeature()
    if feat.MODULE != 'TGR01001' or feat.TLMINID != 2822718:
        gdaltest.post_reason( 'got wrong TLIDRange attributes' )
        return 'fail'

    # Try to recover memory from /vsimem.
    for file in gdal.ReadDir('tmp/cache/TGR01001'):

        if file[0] == '.':
            continue

        gdal.Unlink( '/vsimem/tigertest/'+file )

    return 'success'
Ejemplo n.º 39
0
def test_ogr_interlis1_13():

    if not gdaltest.have_ili_reader:
        pytest.skip()

    ds = ogr.Open('data/ili/surface.itf,data/ili/surface.imd')

    layers = [
        'SURFC_TOP__SURFC_TBL', 'SURFC_TOP__SURFC_TBL_SHAPE',
        'SURFC_TOP__SURFC_TBL_TEXT_ID', 'SURFC_TOP__SURFC_TBL_TEXT_ID_SHAPE',
        'SURFC_TOP__LineAttrib1', 'SURFC_TOP__Flaechenelement',
        'SURFC_TOP__Flaechenelement_Geometrie'
    ]

    assert ds.GetLayerCount() == len(layers), 'layer count wrong.'

    for i in range(ds.GetLayerCount()):
        assert ds.GetLayer(i).GetName() in layers, 'Did not get right layers'

    lyr = ds.GetLayerByName('SURFC_TOP__SURFC_TBL_SHAPE')

    assert lyr.GetFeatureCount() == 5, 'feature count wrong.'

    lyr = ds.GetLayerByName('SURFC_TOP__SURFC_TBL')

    assert lyr.GetFeatureCount() == 4, 'feature count wrong.'

    feat = lyr.GetNextFeature()

    field_values = ['103', 1, 3, 1, 23, 25000, 20060111]

    assert feat.GetFieldCount() == len(field_values), 'field count wrong.'

    for i in range(feat.GetFieldCount()):
        if feat.GetFieldAsString(i) != str(field_values[i]):
            feat.DumpReadable()
            print(feat.GetFieldAsString(i))
            pytest.fail('field value wrong.')

    geom_field_values = [
        'CURVEPOLYGON (COMPOUNDCURVE ((598600.961 249487.174,598608.899 249538.768,598624.774 249594.331,598648.586 249630.05,598684.305 249661.8,598763.68 249685.612,598850.993 249685.612,598854.962 249618.143,598843.055 249550.675,598819.243 249514.956,598763.68 249479.237,598692.243 249447.487,598612.868 249427.643,598600.961 249487.174)))'
    ]

    assert feat.GetGeomFieldCount() == len(
        geom_field_values), 'geom field count wrong.'

    for i in range(feat.GetGeomFieldCount()):
        geom = feat.GetGeomFieldRef(i)
        if ogrtest.check_feature_geometry(geom, geom_field_values[i]) != 0:
            feat.DumpReadable()
            pytest.fail()

    # --- test curved polygon

    feat = lyr.GetNextFeature()
    geom_field_values = [
        'CURVEPOLYGON (COMPOUNDCURVE ((598131.445 249100.621,598170.131 249095.094,598200.448 249085.393),CIRCULARSTRING (598200.448 249085.393,598239.253 249062.352,598246.529 249044.162),(598246.529 249044.162,598245.316 249025.972,598229.552 249017.483,598165.28 249035.673,598134.963 249049.013,598130.273 249052.095,598131.445 249100.621)))'
    ]

    assert feat.GetGeomFieldCount() == len(
        geom_field_values), 'geom field count wrong.'

    for i in range(feat.GetGeomFieldCount()):
        geom = feat.GetGeomFieldRef(i)
        if ogrtest.check_feature_geometry(geom, geom_field_values[i]) != 0:
            feat.DumpReadable()
            pytest.fail()

    # --- test multi-ring polygon

    feat = lyr.GetNextFeature()
    feat = lyr.GetNextFeature()
    field_values = ['106', 3, 3, 1, 23, 25000, 20060111]

    assert feat.GetFieldCount() == len(field_values), 'field count wrong.'

    for i in range(feat.GetFieldCount()):
        if feat.GetFieldAsString(i) != str(field_values[i]):
            feat.DumpReadable()
            print(feat.GetFieldAsString(i))
            pytest.fail('field value wrong.')

    # FIXME: note this is an invalid curve polygon. The two rings are completely disjoint, so this should be a multisurface instead.
    geom_field_values = [
        'CURVEPOLYGON (COMPOUNDCURVE ((747951.24 265833.326,747955.101 265828.716,747954.975 265827.862,747951.166 265828.348,747951.24 265833.326)),COMPOUNDCURVE ((747925.762 265857.606,747927.618 265861.533,747928.237 265860.794,747930.956 265857.547,747925.762 265857.606)))'
    ]

    assert feat.GetGeomFieldCount() == len(
        geom_field_values), 'geom field count wrong.'

    for i in range(feat.GetGeomFieldCount()):
        geom = feat.GetGeomFieldRef(i)
        if ogrtest.check_feature_geometry(geom, geom_field_values[i]) != 0:
            feat.DumpReadable()
            pytest.fail()

    # --- same with text IDENT field
    # TODO: Surface with text IDENT field not supported yet

    # lyr = ds.GetLayerByName('SURFC_TOP__SURFC_TBL_TEXT_ID_SHAPE')

    # if lyr.GetFeatureCount() != 5:
    #     gdaltest.post_reason('feature count wrong.')
    #     return 'fail'

    # lyr = ds.GetLayerByName('SURFC_TOP__SURFC_TBL_TEXT_ID')

    # if lyr.GetFeatureCount() != 4:
    #     gdaltest.post_reason('feature count wrong.')
    #     return 'fail'

    # feat = lyr.GetNextFeature()

    # # Note: original value 'AAA_EZ20156' includes blank-symbol
    # field_values = ['AAA EZ20156', 1, 3, 1, 23, 25000, 20060111]

    # if feat.GetFieldCount() != len(field_values):
    #     gdaltest.post_reason( 'field count wrong.' )
    #     return 'fail'

    # for i in range(feat.GetFieldCount()):
    #     if feat.GetFieldAsString(i) != str(field_values[i]):
    #         feat.DumpReadable()
    #         print(feat.GetFieldAsString(i))
    #         gdaltest.post_reason( 'field value wrong.' )
    #         return 'fail'

    # geom_field_values = ['POLYGON ((598600.961 249487.174,598608.899 249538.768,598624.774 249594.331,598648.586 249630.05,598684.305 249661.8,598763.68 249685.612,598850.993 249685.612,598854.962 249618.143,598843.055 249550.675,598819.243 249514.956,598763.68 249479.237,598692.243 249447.487,598612.868 249427.643,598600.961 249487.174))']

    # if feat.GetGeomFieldCount() != len(geom_field_values):
    #     gdaltest.post_reason( 'geom field count wrong.' )
    #     print(feat.GetGeomFieldCount())
    #     return 'fail'

    # for i in range(feat.GetGeomFieldCount()):
    #     geom = feat.GetGeomFieldRef(i)
    #     if ogrtest.check_feature_geometry(geom, geom_field_values[i]) != 0:
    #         feat.DumpReadable()
    #         return 'fail'

    # # --- test multi-ring polygon

    # feat = lyr.GetNextFeature()
    # feat = lyr.GetNextFeature()
    # feat = lyr.GetNextFeature()
    # field_values = ['AAA EZ36360', 3, 3, 1, 23, 25000, 20060111]

    # if feat.GetFieldCount() != len(field_values):
    #     gdaltest.post_reason( 'field count wrong.' )
    #     return 'fail'

    # for i in range(feat.GetFieldCount()):
    #     if feat.GetFieldAsString(i) != str(field_values[i]):
    #         feat.DumpReadable()
    #         print(feat.GetFieldAsString(i))
    #         gdaltest.post_reason( 'field value wrong.' )
    #         return 'fail'

    # geom_field_values = ['POLYGON ((747925.762 265857.606,747927.618 265861.533,747928.237 265860.794,747930.956 265857.547,747925.762 265857.606),(747951.24 265833.326,747955.101 265828.716,747954.975 265827.862,747951.166 265828.348,747951.24 265833.326))']

    # if feat.GetGeomFieldCount() != len(geom_field_values):
    #     gdaltest.post_reason( 'geom field count wrong.' )
    #     print(feat.GetGeomFieldCount())
    #     return 'fail'

    # for i in range(feat.GetGeomFieldCount()):
    #     geom = feat.GetGeomFieldRef(i)
    #     if ogrtest.check_feature_geometry(geom, geom_field_values[i]) != 0:
    #         feat.DumpReadable()
    #         return 'fail'

    lyr = ds.GetLayerByName('SURFC_TOP__Flaechenelement_Geometrie')
    assert lyr.GetFeatureCount() == 3, 'feature count wrong.'

    feat = lyr.GetNextFeature()

    geom_field_values = [
        'MULTICURVE (COMPOUNDCURVE ((697064.616 245051.751,697064.773 245052.007,697067.63 245050.258,697067.473 245050.002,697064.616 245051.751)))'
    ]

    for i in range(feat.GetGeomFieldCount()):
        geom = feat.GetGeomFieldRef(i)
        if ogrtest.check_feature_geometry(geom, geom_field_values[i]) != 0:
            feat.DumpReadable()
            pytest.fail()

    feat = lyr.GetNextFeature()

    geom_field_values = [
        'MULTICURVE (COMPOUNDCURVE ((698298.028 246754.897,698295.899 246752.775,698293.113 246755.525,698295.243 246757.648)))'
    ]

    for i in range(feat.GetGeomFieldCount()):
        geom = feat.GetGeomFieldRef(i)
        if ogrtest.check_feature_geometry(geom, geom_field_values[i]) != 0:
            feat.DumpReadable()
            pytest.fail()

    lyr = ds.GetLayerByName('SURFC_TOP__Flaechenelement')
    assert lyr.GetFeatureCount() == 2, 'feature count wrong.'

    feat = lyr.GetNextFeature()

    geom_field_values = [
        'CURVEPOLYGON (COMPOUNDCURVE ((697064.616 245051.751,697064.773 245052.007,697067.63 245050.258,697067.473 245050.002,697064.616 245051.751))))'
    ]

    for i in range(feat.GetGeomFieldCount()):
        geom = feat.GetGeomFieldRef(i)
        if ogrtest.check_feature_geometry(geom, geom_field_values[i]) != 0:
            feat.DumpReadable()
            pytest.fail()

    feat = lyr.GetNextFeature()

    geom_field_values = [
        'CURVEPOLYGON (COMPOUNDCURVE ((698298.028 246754.897,698295.899 246752.775,698293.113 246755.525,698295.243 246757.648),(698295.243 246757.648,698298.028 246754.897)))'
    ]

    for i in range(feat.GetGeomFieldCount()):
        geom = feat.GetGeomFieldRef(i)
        if ogrtest.check_feature_geometry(geom, geom_field_values[i]) != 0:
            feat.DumpReadable()
            pytest.fail()

    # Test assembling curves not in "right" order
    ds = ogr.Open('data/ili/surface_complex.itf,data/ili/surface.imd')
    lyr = ds.GetLayerByName('SURFC_TOP__SURFC_TBL')
    feat = lyr.GetNextFeature()

    geom_field_values = [
        'CURVEPOLYGON (COMPOUNDCURVE ((747955.101 265828.716,747954.975 265827.862),(747954.975 265827.862,747951.166 265828.348,747951.24 265833.326),(747951.24 265833.326,747955.101 265828.716)))'
    ]

    for i in range(feat.GetGeomFieldCount()):
        geom = feat.GetGeomFieldRef(i)
        if ogrtest.check_feature_geometry(geom, geom_field_values[i]) != 0:
            feat.DumpReadable()
            pytest.fail()
Ejemplo n.º 40
0
def test_ogr_interlis2_4():

    if not gdaltest.have_ili_reader:
        pytest.skip()

    ds = ogr.Open(
        'data/ili/ch.bazl.sicherheitszonenplan.oereb_20131118.xtf,data/ili/ch.bazl.sicherheitszonenplan.oereb_20131118.imd'
    )
    assert ds is not None

    layers = [
        'chGeoId10.BFSNr_', 'chGeoId10.Kanton_', 'chGeoId10.KantonInklFl_',
        'CodeISO.CountryCodeISO_', 'CodeISO.LanguageCodeISO_',
        'MultilingualText09.LocalizedMText',
        'MultilingualText09.LocalizedText', 'MultilingualText09.LocalizedURI',
        'MultilingualText09.MultilingualText',
        'MultilingualText09.MultilingualURI', 'OeREBKRM09.ArtikelNummer_',
        'OeREBKRM09.Datum_', 'OeREBKRM09.Thema_', 'OeREBKRM09.WebReferenz_',
        'OeREBKRM09.ArtikelInhaltMehrsprachig',
        'OeREBKRM09vs.Vorschriften.Amt', 'OeREBKRM09vs.Vorschriften.Artikel',
        'OeREBKRM09vs.Vorschriften.Rechtsvorschrift',
        'OeREBKRM09vs.Vorschriften.HinweisWeitereDokumente',
        'OeREBKRM09trsfr.Transferstruktur.DarstellungsDienst',
        'OeREBKRM09trsfr.Transferstruktur.Eigentumsbeschraenkung',
        'OeREBKRM09trsfr.Transferstruktur.Geometrie',
        'OeREBKRM09trsfr.Transferstruktur.HinweisDefinition',
        'OeREBKRM09trsfr.Transferstruktur.GrundlageVerfeinerung',
        'OeREBKRM09trsfr.Transferstruktur.HinweisDefinitionDokument',
        'OeREBKRM09trsfr.Transferstruktur.HinweisVorschrift',
        'OeREBKRM09vs.Vorschriften.Dokument'
    ]

    assert ds.GetLayerCount() == len(layers), 'layer count wrong.'

    for i in range(ds.GetLayerCount()):
        assert ds.GetLayer(i).GetName() in layers, 'Did not get right layers'

    lyr = ds.GetLayerByName('OeREBKRM09trsfr.Transferstruktur.Geometrie')
    assert lyr.GetFeatureCount() == 36, 'feature count wrong.'

    feat = lyr.GetNextFeature()

    field_values = [
        '108-G-0002', 'inKraft', '1975-06-27',
        'http://www.geocat.ch/geonetwork/srv/ger/metadata.show?fileIdentifier=ff218384-7251-4e68-85e7-c163dd366616',
        '108-Z-0002', 'ch.admin.bazl'
    ]

    if feat.GetFieldCount() != len(field_values):
        feat.DumpReadable()
        pytest.fail('field count wrong.')

    for i in range(feat.GetFieldCount()):
        if feat.GetFieldAsString(i) != str(field_values[i]):
            feat.DumpReadable()
            print(feat.GetFieldAsString(i))
            pytest.fail('field value wrong.')

    geom_field_values = [
        None, None,
        'CURVEPOLYGON (COMPOUNDCURVE ((658593.928 254957.714,658511.628 254948.614,658418.028 254938.516,658106.426 254913.918,658192.222 254445.914,658771.228 254619.412,659667.232 254699.606,660369.238 254827.202,661016.442 255010.1,661279.644 255090.198,661866.648 255138.094,661784.45 255601.798,661211.146 255432.8,660320.54 255352.806,659523.436 255206.71,658703.528 254966.814,658624.228 254961.014,658593.928 254957.714)))'
    ]
    assert feat.GetGeomFieldCount() == len(
        geom_field_values), 'geom field count wrong.'

    for i in range(feat.GetGeomFieldCount()):
        geom = feat.GetGeomFieldRef(i)
        val = geom_field_values[i]
        if val is None:
            ok = geom is None
        else:
            ok = ogrtest.check_feature_geometry(geom, val) == 0
        if not ok:
            print(geom)
            pytest.fail('geom check failed.')
Ejemplo n.º 41
0
def test_ogr_edigeo_1():

    filelist = ['E000AB01.THF',
                'EDAB01S1.VEC',
                'EDAB01SE.DIC',
                'EDAB01SE.GEN',
                'EDAB01SE.GEO',
                'EDAB01SE.QAL',
                'EDAB01SE.SCD',
                'EDAB01T1.VEC',
                'EDAB01T2.VEC',
                'EDAB01T3.VEC']
    # base_url = 'http://svn.geotools.org/trunk/modules/unsupported/edigeo/src/test/resources/org/geotools/data/edigeo/test-data/'
    base_url = 'https://raw.githubusercontent.com/geotools/geotools/master/modules/unsupported/edigeo/src/test/resources/org/geotools/data/edigeo/test-data/'

    for filename in filelist:
        if not gdaltest.download_file(base_url + filename, filename):
            pytest.skip()

    try:
        for filename in filelist:
            os.stat('tmp/cache/' + filename)
    except OSError:
        pytest.skip()

    ds = ogr.Open('tmp/cache/E000AB01.THF')
    assert ds.GetLayerCount() == 24

    layers = [('BATIMENT_id', ogr.wkbPolygon, 107),
              ('BORNE_id', ogr.wkbPoint, 5),
              ('COMMUNE_id', ogr.wkbPolygon, 1),
              ('LIEUDIT_id', ogr.wkbPolygon, 3),
              ('NUMVOIE_id', ogr.wkbPoint, 43),
              ('PARCELLE_id', ogr.wkbPolygon, 155),
              ('SECTION_id', ogr.wkbPolygon, 1),
              ('SUBDFISC_id', ogr.wkbPolygon, 1),
              ('SUBDSECT_id', ogr.wkbPolygon, 1),
              ('SYMBLIM_id', ogr.wkbPoint, 29),
              ('TLINE_id', ogr.wkbLineString, 134),
              ('TPOINT_id', ogr.wkbPoint, 1),
              ('TRONFLUV_id', ogr.wkbPolygon, 3),
              ('TRONROUTE_id', ogr.wkbPolygon, 1),
              ('TSURF_id', ogr.wkbPolygon, 3),
              ('ZONCOMMUNI_id', ogr.wkbLineString, 15),
              ('ID_S_OBJ_Z_1_2_2', ogr.wkbPoint, 248),
             ]

    for l in layers:
        lyr = ds.GetLayerByName(l[0])
        assert lyr.GetLayerDefn().GetGeomType() == l[1]
        assert lyr.GetFeatureCount() == l[2]
        if l[1] != ogr.wkbNone:
            assert lyr.GetSpatialRef().ExportToWkt().find('Lambert_Conformal_Conic_1SP') != -1

    lyr = ds.GetLayerByName('BORNE_id')
    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry(feat, 'POINT (877171.28 72489.22)'):
        feat.DumpReadable()
        pytest.fail()

    lyr = ds.GetLayerByName('BATIMENT_id')
    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry(feat, 'POLYGON ((877206.16 71888.82,877193.14 71865.51,877202.95 71860.07,877215.83 71883.5,877206.16 71888.82))'):
        feat.DumpReadable()
        pytest.fail()

    lyr = ds.GetLayerByName('ZONCOMMUNI_id')
    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry(feat, 'LINESTRING (877929.8 71656.39,877922.38 71663.72,877911.48 71669.51,877884.23 71675.64,877783.07 71694.04,877716.31 71706.98,877707.45 71709.71,877702.0 71713.79,877696.89 71719.58,877671.69 71761.82,877607.99 71865.03,877545.32 71959.04,877499.22 72026.82)'):
        feat.DumpReadable()
        pytest.fail()

    ds.Destroy()
Ejemplo n.º 42
0
def test_gdal_polygonize_1():

    script_path = test_py_scripts.get_py_script('gdal_polygonize')
    if script_path is None:
        return 'skip'

    # Create a OGR datasource to put results in.
    shp_drv = ogr.GetDriverByName('ESRI Shapefile')
    try:
        os.stat('tmp/poly.shp')
        shp_drv.DeleteDataSource('tmp/poly.shp')
    except:
        pass

    shp_ds = shp_drv.CreateDataSource('tmp/poly.shp')

    shp_layer = shp_ds.CreateLayer('poly', None, ogr.wkbPolygon)

    fd = ogr.FieldDefn('DN', ogr.OFTInteger)
    shp_layer.CreateField(fd)

    shp_ds.Destroy()

    # run the algorithm.
    test_py_scripts.run_py_script(script_path, 'gdal_polygonize',
                                  '../alg/data/polygonize_in.grd tmp poly DN')

    # Confirm we get the set of expected features in the output layer.

    shp_ds = ogr.Open('tmp')
    shp_lyr = shp_ds.GetLayerByName('poly')

    expected_feature_number = 13
    if shp_lyr.GetFeatureCount() != expected_feature_number:
        gdaltest.post_reason(
            'GetFeatureCount() returned %d instead of %d' %
            (shp_lyr.GetFeatureCount(), expected_feature_number))
        return 'fail'

    expect = [107, 123, 115, 115, 140, 148, 123, 140, 156, 100, 101, 102, 103]

    tr = ogrtest.check_features_against_list(shp_lyr, 'DN', expect)

    # check at least one geometry.
    if tr:
        shp_lyr.SetAttributeFilter('dn = 156')
        feat_read = shp_lyr.GetNextFeature()
        if ogrtest.check_feature_geometry(
                feat_read,
                'POLYGON ((440720 3751200,440900 3751200,440900 3751020,440720 3751020,440720 3751200),(440780 3751140,440780 3751080,440840 3751080,440840 3751140,440780 3751140))'
        ) != 0:
            tr = 0
        feat_read.Destroy()

    shp_ds.Destroy()
    # Reload drv because of side effects of run_py_script()
    shp_drv = ogr.GetDriverByName('ESRI Shapefile')
    shp_drv.DeleteDataSource('tmp/poly.shp')

    if tr:
        return 'success'
    else:
        return 'fail'
Ejemplo n.º 43
0
def test_gdal_contour_4():
    if test_cli_utilities.get_gdal_contour_path() is None:
        return 'skip'

    try:
        os.remove('tmp/contour_orientation.shp')
    except:
        pass
    try:
        os.remove('tmp/contour_orientation.dbf')
    except:
        pass
    try:
        os.remove('tmp/contour_orientation.shx')
    except:
        pass

    drv = gdal.GetDriverByName('GTiff')
    wkt = 'GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\"4326\"]]'

    size = 160
    precision = 1. / size

    ds = drv.Create('tmp/gdal_contour_orientation.tif', size, size, 1)
    ds.SetProjection(wkt)
    ds.SetGeoTransform([1, precision, 0, 50, 0, -precision])

    # Make the elevation 15 for the whole image
    raw_data = array.array('h', [15 for i in range(int(size))]).tostring()
    for i in range(int(size)):
        ds.WriteRaster(0,
                       i,
                       int(size),
                       1,
                       raw_data,
                       buf_type=gdal.GDT_Int16,
                       band_list=[1])

# Create a hill with elevation 25
    raw_data = array.array('h', [25 for i in range(2)]).tostring()
    for i in range(2):
        ds.WriteRaster(int(size / 4) + int(size / 8) - 1,
                       i + int(size / 2) - 1,
                       2,
                       1,
                       raw_data,
                       buf_type=gdal.GDT_Int16,
                       band_list=[1])

# Create a depression with elevation 5
    raw_data = array.array('h', [5 for i in range(2)]).tostring()
    for i in range(2):
        ds.WriteRaster(int(size / 2) + int(size / 8) - 1,
                       i + int(size / 2) - 1,
                       2,
                       1,
                       raw_data,
                       buf_type=gdal.GDT_Int16,
                       band_list=[1])

    ds = None

    gdaltest.runexternal(
        test_cli_utilities.get_gdal_contour_path() +
        ' -a elev -i 10 tmp/gdal_contour_orientation.tif tmp/contour_orientation1.shp'
    )

    ds = ogr.Open('tmp/contour_orientation1.shp')

    expected_contours = [
        'LINESTRING (1.621875 49.493749999999999,' +
        '1.628125 49.493749999999999,' + '1.63125 49.496875000000003,' +
        '1.63125 49.503124999999997,' + '1.628125 49.50625,' +
        '1.621875 49.50625,' + '1.61875 49.503124999999997,' +
        '1.61875 49.496875000000003,' + '1.621875 49.493749999999999)',
        'LINESTRING (1.371875 49.493749999999999,' +
        '1.36875 49.496875000000003,' + '1.36875 49.503124999999997,' +
        '1.371875 49.50625,' + '1.378125 49.50625,' +
        '1.38125 49.503124999999997,' + '1.38125 49.496875000000003,' +
        '1.378125 49.493749999999999,' + '1.371875 49.493749999999999)'
    ]
    expected_elev = [10, 20]

    lyr = ds.ExecuteSQL("select * from contour_orientation1 order by elev asc")

    if lyr.GetFeatureCount() != len(expected_contours):
        print('Got %d features. Expected %d' %
              (lyr.GetFeatureCount(), len(expected_contours)))
        return 'fail'

    i = 0
    test_failed = False
    feat = lyr.GetNextFeature()
    while feat is not None:
        expected_geom = ogr.CreateGeometryFromWkt(expected_contours[i])
        if feat.GetField('elev') != expected_elev[i]:
            print('Got %f. Expected %f' %
                  (feat.GetField('elev'), expected_elev[i]))
            return 'fail'
        if ogrtest.check_feature_geometry(feat, expected_geom) != 0:
            print('Got      %s.\nExpected %s' %
                  (feat.GetGeometryRef().ExportToWkt(), expected_contours[i]))
            test_failed = True
        i = i + 1
        feat = lyr.GetNextFeature()

    ds.ReleaseResultSet(lyr)
    ds.Destroy()

    if test_failed:
        return 'fail'
    else:
        return 'success'
Ejemplo n.º 44
0
def test_ogr_gtm_read_2():
    if not gdaltest.have_gtm:
        pytest.skip()

    assert gdaltest.gtm_ds is not None

    lyr = gdaltest.gtm_ds.GetLayerByName('samplemap_tracks')

    assert lyr.GetFeatureCount() == 3, 'wrong number of features'

    # Test 1st feature
    feat = lyr.GetNextFeature()

    assert feat.GetField(
        'name') == 'San Sebastian Street', 'Wrong name field value'

    assert feat.GetField('type') == 2, 'Wrong type field value'

    assert feat.GetField('color') == 0, 'Wrong color field value'

    # if feat.GetField('time') is not None:
    #    gdaltest.post_reason( 'Wrong time field value' )
    #    return 'fail'

    wkt = 'LINESTRING (-47.807481607448054 -21.177795963939211,' + \
          '-47.808151245117188 -21.177299499511719,' + \
          '-47.809136624130645 -21.176562836150087,' + \
          '-47.809931418108405 -21.175971104366582)'
    assert not ogrtest.check_feature_geometry(feat, wkt), 'Unexpected geometry'

    # Test 2nd feature
    feat = lyr.GetNextFeature()

    assert feat.GetField(
        'name') == 'Barao do Amazonas Street', 'Wrong name field value'

    assert feat.GetField('type') == 1, 'Wrong type field value'

    assert feat.GetField('color') == 0, 'Wrong color field value'

    # if feat.GetField('time') is not None:
    #    gdaltest.post_reason( 'Wrong time field value' )
    #    return 'fail'

    wkt = 'LINESTRING (-47.808751751608561 -21.178029550275486,' + \
        '-47.808151245117188 -21.177299499511719,' + \
        '-47.807561550927701 -21.176617693474089,' + \
        '-47.806959118447779 -21.175900153727685)'
    assert not ogrtest.check_feature_geometry(feat, wkt)

    # Test 3rd feature
    feat = lyr.GetNextFeature()

    assert feat.GetField('name') == 'Curupira Park', 'Wrong name field value'

    assert feat.GetField('type') == 17, 'Wrong type field value'

    assert feat.GetField('color') == 46848, 'Wrong color field value'

    # if feat.GetField('time') is not None:
    #    gdaltest.post_reason( 'Wrong time field value' )
    #    return 'fail'

    wkt = 'LINESTRING (-47.7894287109375 -21.194473266601562,' + \
        '-47.793514591064451 -21.197530536743162,' + \
        '-47.797027587890625 -21.19483757019043,' + \
        '-47.794818878173828 -21.192028045654297,' + \
        '-47.794120788574219 -21.193340301513672,' + \
        '-47.792263031005859 -21.194267272949219,' + \
        '-47.7894287109375 -21.194473266601562)'

    assert not ogrtest.check_feature_geometry(feat, wkt), 'Unexpected geometry'
Ejemplo n.º 45
0
def ogr_gtm_read_1():
    if not gdaltest.have_gtm:
        return 'skip'

    if gdaltest.gtm_ds is None:
        return 'fail'

    lyr = gdaltest.gtm_ds.GetLayerByName('samplemap_waypoints')

    if lyr.GetFeatureCount() != 3:
        gdaltest.post_reason('wrong number of features')
        return 'fail'

    # Test 1st feature
    feat = lyr.GetNextFeature()

    if feat.GetField('name') != 'WAY6':
        gdaltest.post_reason('Wrong name field value')
        return 'fail'

    if feat.GetField('comment') != 'Santa Cruz Stadium':
        gdaltest.post_reason('Wrong comment field value')
        return 'fail'

    if feat.GetField('icon') != 92:
        gdaltest.post_reason('Wrong icon field value')
        return 'fail'

    if feat.GetField('time') != '2009/12/18 17:32:41':
        gdaltest.post_reason('Wrong time field value')
        return 'fail'

    wkt = 'POINT (-47.789974212646484 -21.201919555664062)'
    if ogrtest.check_feature_geometry(feat, wkt):
        gdaltest.post_reason('Unexpected geometry')
        return 'fail'

    # Test 2nd feature
    feat = lyr.GetNextFeature()

    if feat.GetField('name') != 'WAY6':
        gdaltest.post_reason('Wrong name field value')
        return 'fail'

    if feat.GetField('comment') != 'Joe\'s Goalkeeper Pub':
        gdaltest.post_reason('Wrong comment field value')
        return 'fail'

    if feat.GetField('icon') != 4:
        gdaltest.post_reason('Wrong icon field value')
        return 'fail'

    if feat.GetField('time') != '2009/12/18 17:34:46':
        gdaltest.post_reason('Wrong time field value')
        return 'fail'

    wkt = 'POINT (-47.909481048583984 -21.294229507446289)'
    if ogrtest.check_feature_geometry(feat, wkt):
        gdaltest.post_reason('Unexpected geometry')
        return 'fail'

    # Test 3rd feature
    feat = lyr.GetNextFeature()

    if feat.GetField('name') != '33543400':
        gdaltest.post_reason('Wrong name field value')
        return 'fail'

    if feat.GetField('comment') != 'City Hall':
        gdaltest.post_reason('Wrong comment field value')
        return 'fail'

    if feat.GetField('icon') != 61:
        gdaltest.post_reason('Wrong icon field value')
        return 'fail'

    if feat.GetField('time') != None:
        gdaltest.post_reason('Wrong time field value')
        return 'fail'

    wkt = 'POINT (-47.806097491943362 -21.176849600708007)'
    if ogrtest.check_feature_geometry(feat, wkt):
        gdaltest.post_reason('Unexpected geometry')
        return 'fail'

    return 'success'
Ejemplo n.º 46
0
def ogr_osm_1(filename='data/test.pbf'):

    ogrtest.osm_drv = ogr.GetDriverByName('OSM')
    if ogrtest.osm_drv is None:
        return 'skip'

    ds = ogr.Open(filename)
    if ds is None:
        if filename == 'data/test.osm':
            ogrtest.osm_drv_parse_osm = False
            if gdal.GetLastErrorMsg().find(
                    'OSM XML detected, but Expat parser not available') == 0:
                return 'skip'

        gdaltest.post_reason('fail')
        return 'fail'
    else:
        if filename == 'data/test.osm':
            ogrtest.osm_drv_parse_osm = True

    # Test points
    lyr = ds.GetLayer('points')
    if lyr.GetGeomType() != ogr.wkbPoint:
        gdaltest.post_reason('fail')
        return 'fail'

    sr = lyr.GetSpatialRef()
    if sr.ExportToWkt().find('GEOGCS["WGS 84",DATUM["WGS_1984",') != 0 and \
       sr.ExportToWkt().find('GEOGCS["GCS_WGS_1984",DATUM["WGS_1984"') != 0:
        gdaltest.post_reason('fail')
        print(sr.ExportToWkt())
        return 'fail'

    if filename == 'data/test.osm':
        if lyr.GetExtent() != (2.0, 3.0, 49.0, 50.0):
            gdaltest.post_reason('fail')
            print(lyr.GetExtent())
            return 'fail'

    feat = lyr.GetNextFeature()
    if feat.GetFieldAsString('osm_id') != '3' or \
       feat.GetFieldAsString('name') != 'Some interesting point' or \
       feat.GetFieldAsString('other_tags') != '"foo"=>"bar","bar"=>"baz"':
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    if ogrtest.check_feature_geometry(
            feat, ogr.CreateGeometryFromWkt('POINT (3.0 49.5)')) != 0:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    feat = lyr.GetNextFeature()
    if feat is not None:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    # Test lines
    lyr = ds.GetLayer('lines')
    if lyr.GetGeomType() != ogr.wkbLineString:
        gdaltest.post_reason('fail')
        return 'fail'

    feat = lyr.GetNextFeature()
    if feat.GetFieldAsString('osm_id') != '1' or \
       feat.GetFieldAsString('highway') != 'motorway' or \
       feat.GetFieldAsInteger('z_order') != 9 or \
       feat.GetFieldAsString('other_tags') != '"foo"=>"bar"':
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    if ogrtest.check_feature_geometry(
            feat, ogr.CreateGeometryFromWkt('LINESTRING (2 49,3 50)')) != 0:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    feat = lyr.GetNextFeature()
    if feat.GetFieldAsString('osm_id') != '6':
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    if ogrtest.check_feature_geometry(
            feat,
            ogr.CreateGeometryFromWkt(
                'LINESTRING (2 49,3 49,3 50,2 50,2 49)')) != 0:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    feat = lyr.GetNextFeature()
    if feat is not None:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    # Test multipolygons
    lyr = ds.GetLayer('multipolygons')
    if filename == 'tmp/ogr_osm_3':
        if lyr.GetGeomType() != ogr.wkbPolygon:
            gdaltest.post_reason('fail')
            return 'fail'
    else:
        if lyr.GetGeomType() != ogr.wkbMultiPolygon:
            gdaltest.post_reason('fail')
            return 'fail'

    feat = lyr.GetNextFeature()
    if feat.GetFieldAsString('osm_id') != '1' or \
       feat.GetFieldAsString('type') != 'multipolygon' or \
       feat.GetFieldAsString('natural') != 'forest':
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    if filename == 'tmp/ogr_osm_3':
        if ogrtest.check_feature_geometry(
                feat,
                ogr.CreateGeometryFromWkt(
                    'POLYGON ((2 49,2 50,3 50,3 49,2 49),(2.1 49.1,2.2 49.1,2.2 49.2,2.1 49.2,2.1 49.1))'
                )) != 0:
            gdaltest.post_reason('fail')
            feat.DumpReadable()
            return 'fail'
    else:
        if ogrtest.check_feature_geometry(
                feat,
                ogr.CreateGeometryFromWkt(
                    'MULTIPOLYGON (((2 49,3 49,3 50,2 50,2 49),(2.1 49.1,2.2 49.1,2.2 49.2,2.1 49.2,2.1 49.1)))'
                )) != 0:
            gdaltest.post_reason('fail')
            feat.DumpReadable()
            return 'fail'

    feat = lyr.GetNextFeature()
    if feat.GetFieldAsString('osm_id') != '5' or \
       feat.GetFieldAsString('type') != 'multipolygon' or \
       feat.GetFieldAsString('natural') != 'wood':
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    feat = lyr.GetNextFeature()
    if feat.GetFieldAsString('osm_way_id') != '8' or \
       feat.GetFieldAsString('name') != 'standalone_polygon':
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    feat = lyr.GetNextFeature()
    if feat is not None:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    # Test multilinestrings
    lyr = ds.GetLayer('multilinestrings')
    if filename == 'tmp/ogr_osm_3':
        if lyr.GetGeomType() != ogr.wkbLineString:
            gdaltest.post_reason('fail')
            return 'fail'
    else:
        if lyr.GetGeomType() != ogr.wkbMultiLineString:
            gdaltest.post_reason('fail')
            return 'fail'

    feat = lyr.GetNextFeature()
    if feat.GetFieldAsString('osm_id') != '3' or \
       feat.GetFieldAsString('type') != 'route':
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    if filename == 'tmp/ogr_osm_3':
        if ogrtest.check_feature_geometry(
                feat,
                ogr.CreateGeometryFromWkt('LINESTRING (2 49,3 50)')) != 0:
            gdaltest.post_reason('fail')
            feat.DumpReadable()
            return 'fail'
    else:
        if ogrtest.check_feature_geometry(
                feat, ogr.CreateGeometryFromWkt(
                    'MULTILINESTRING ((2 49,3 50))')) != 0:
            gdaltest.post_reason('fail')
            feat.DumpReadable()
            return 'fail'

    feat = lyr.GetNextFeature()
    if feat is not None:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    # Test other_relations
    lyr = ds.GetLayer('other_relations')
    if filename == 'tmp/ogr_osm_3':
        if lyr is not None:
            gdaltest.post_reason('fail')
            return 'fail'
    else:
        if lyr.GetGeomType() != ogr.wkbGeometryCollection:
            gdaltest.post_reason('fail')
            return 'fail'

        feat = lyr.GetNextFeature()
        if feat.GetFieldAsString('osm_id') != '4' or \
           feat.GetFieldAsString('type') != 'other_type':
            gdaltest.post_reason('fail')
            feat.DumpReadable()
            return 'fail'

        if ogrtest.check_feature_geometry(
                feat,
                ogr.CreateGeometryFromWkt(
                    'GEOMETRYCOLLECTION (POINT (2 49),LINESTRING (2 49,3 50))')
        ) != 0:
            gdaltest.post_reason('fail')
            feat.DumpReadable()
            return 'fail'

        feat = lyr.GetNextFeature()
        if feat is not None:
            gdaltest.post_reason('fail')
            feat.DumpReadable()
            return 'fail'

    if ds.GetDriver().GetName() == 'OSM':
        sql_lyr = ds.ExecuteSQL("GetBytesRead()")
        if sql_lyr is None:
            gdaltest.post_reason('fail')
            return 'fail'
        feat = sql_lyr.GetNextFeature()
        if feat is None:
            gdaltest.post_reason('fail')
            return 'fail'
        feat = sql_lyr.GetNextFeature()
        if feat is not None:
            gdaltest.post_reason('fail')
            return 'fail'
        sql_lyr.ResetReading()
        feat = sql_lyr.GetNextFeature()
        if feat is None:
            gdaltest.post_reason('fail')
            return 'fail'
        sql_lyr.GetLayerDefn()
        sql_lyr.TestCapability("foo")
        ds.ReleaseResultSet(sql_lyr)

    ds = None

    return 'success'
Ejemplo n.º 47
0
def ogr_idrisi_1():

    ds = ogr.Open('data/points.vct')
    if ds is None:
        gdaltest.post_reason('fail')
        return 'fail'

    lyr = ds.GetLayer(0)
    if lyr.GetGeomType() != ogr.wkbPoint:
        gdaltest.post_reason('fail')
        return 'fail'

    if lyr.GetLayerDefn().GetFieldDefn(1).GetName() != 'IntegerField':
        gdaltest.post_reason('fail')
        return 'fail'

    if lyr.GetLayerDefn().GetFieldDefn(1).GetType() != ogr.OFTInteger:
        gdaltest.post_reason('fail')
        return 'fail'

    sr = lyr.GetSpatialRef()
    if sr.ExportToWkt().find('PROJCS["UTM Zone 31, Northern Hemisphere"') != 0:
        gdaltest.post_reason('fail')
        print(sr.ExportToWkt())
        return 'fail'

    if lyr.GetFeatureCount() != 2:
        gdaltest.post_reason('fail')
        return 'fail'

    if lyr.TestCapability(ogr.OLCFastFeatureCount) != 1:
        gdaltest.post_reason('fail')
        return 'fail'

    if lyr.TestCapability(ogr.OLCFastGetExtent) != 1:
        gdaltest.post_reason('fail')
        return 'fail'

    if lyr.GetExtent() != (400000.0, 600000.0, 4000000.0, 5000000.0):
        gdaltest.post_reason('fail')
        print(lyr.GetExtent())
        return 'fail'

    feat = lyr.GetNextFeature()
    if feat.GetFieldAsDouble(0) != 1.0:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    if feat.GetFieldAsInteger(1) != 2:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    if feat.GetFieldAsDouble(2) != 3.45:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    if feat.GetFieldAsString(3) != 'foo':
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    if ogrtest.check_feature_geometry(
            feat, ogr.CreateGeometryFromWkt('POINT(400000 5000000)')) != 0:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    feat = lyr.GetNextFeature()
    if feat.GetFieldAsDouble(0) != 2.0:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    if ogrtest.check_feature_geometry(
            feat, ogr.CreateGeometryFromWkt('POINT (600000 4000000)')) != 0:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    lyr.SetSpatialFilterRect(600000 - 1, 4000000 - 1, 600000 + 1, 4000000 + 1)
    lyr.ResetReading()
    feat = lyr.GetNextFeature()
    if feat.GetFieldAsDouble(0) != 2.0:
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'

    lyr.SetSpatialFilterRect(0, 0, 1, 1)
    lyr.ResetReading()
    feat = lyr.GetNextFeature()
    if feat is not None:
        gdaltest.post_reason('fail')
        return 'fail'

    ds = None

    return 'success'
Ejemplo n.º 48
0
def test_ogr_gpx_1():
    if not gdaltest.have_gpx:
        pytest.skip()

    assert gdaltest.gpx_ds is not None

    lyr = gdaltest.gpx_ds.GetLayerByName('waypoints')

    expect = [2, None]

    with gdaltest.error_handler():
        tr = ogrtest.check_features_against_list(lyr, 'ele', expect)
    assert tr

    lyr.ResetReading()

    expect = ['waypoint name', None]

    tr = ogrtest.check_features_against_list(lyr, 'name', expect)
    assert tr

    lyr.ResetReading()

    expect = ['href', None]

    tr = ogrtest.check_features_against_list(lyr, 'link1_href', expect)
    assert tr

    lyr.ResetReading()

    expect = ['text', None]

    tr = ogrtest.check_features_against_list(lyr, 'link1_text', expect)
    assert tr

    lyr.ResetReading()

    expect = ['type', None]

    tr = ogrtest.check_features_against_list(lyr, 'link1_type', expect)
    assert tr

    lyr.ResetReading()

    expect = ['href2', None]

    tr = ogrtest.check_features_against_list(lyr, 'link2_href', expect)
    assert tr

    lyr.ResetReading()

    expect = ['text2', None]

    tr = ogrtest.check_features_against_list(lyr, 'link2_text', expect)
    assert tr

    lyr.ResetReading()

    expect = ['type2', None]

    tr = ogrtest.check_features_against_list(lyr, 'link2_type', expect)
    assert tr

    lyr.ResetReading()

    expect = ['2007/11/25 17:58:00+01', None]

    tr = ogrtest.check_features_against_list(lyr, 'time', expect)
    assert tr

    lyr.ResetReading()
    feat = lyr.GetNextFeature()
    assert (ogrtest.check_feature_geometry(feat,
                                           'POINT (1 0)',
                                           max_error=0.0001) == 0)

    feat = lyr.GetNextFeature()
    assert (ogrtest.check_feature_geometry(feat,
                                           'POINT (4 3)',
                                           max_error=0.0001) == 0)
Ejemplo n.º 49
0
def test_ogr_gxt_3():

    gdaltest.gxt_ds = None

    src_ds = ogr.Open('data/points.gxt')

    try:
        os.remove('tmp/tmp.gxt')
    except OSError:
        pass

    # Duplicate all the points from the source GXT
    src_lyr = src_ds.GetLayerByName('points.points')

    gdaltest.gxt_ds = ogr.GetDriverByName('Geoconcept').CreateDataSource(
        'tmp/tmp.gxt')

    srs = osr.SpatialReference()
    srs.SetWellKnownGeogCS('WGS84')

    gxt_lyr = gdaltest.gxt_ds.CreateLayer('points',
                                          srs,
                                          geom_type=ogr.wkbPoint)

    src_lyr.ResetReading()

    for i in range(src_lyr.GetLayerDefn().GetFieldCount()):
        field_defn = src_lyr.GetLayerDefn().GetFieldDefn(i)
        gxt_lyr.CreateField(field_defn)

    dst_feat = ogr.Feature(feature_def=gxt_lyr.GetLayerDefn())

    feat = src_lyr.GetNextFeature()
    while feat is not None:
        dst_feat.SetFrom(feat)
        assert gxt_lyr.CreateFeature(dst_feat) == 0, 'CreateFeature failed.'

        feat = src_lyr.GetNextFeature()

    gdaltest.gxt_ds = None

    # Read the newly written GXT file and check its features and geometries
    gdaltest.gxt_ds = ogr.Open('tmp/tmp.gxt')
    gxt_lyr = gdaltest.gxt_ds.GetLayerByName('points.points')

    assert gxt_lyr.GetSpatialRef().IsSame(
        srs), 'Output SRS is not the one expected.'

    expect = ['PID1', 'PID2']

    tr = ogrtest.check_features_against_list(gxt_lyr, 'Primary_ID', expect)
    assert tr

    gxt_lyr.ResetReading()

    expect = ['SID1', 'SID2']

    tr = ogrtest.check_features_against_list(gxt_lyr, 'Secondary_ID', expect)
    assert tr

    gxt_lyr.ResetReading()

    expect = ['TID1', None]

    tr = ogrtest.check_features_against_list(gxt_lyr, 'Third_ID', expect)
    assert tr

    gxt_lyr.ResetReading()

    feat = gxt_lyr.GetNextFeature()

    assert (ogrtest.check_feature_geometry(feat,
                                           'POINT(0 1)',
                                           max_error=0.000000001) == 0)

    feat = gxt_lyr.GetNextFeature()

    assert (ogrtest.check_feature_geometry(feat,
                                           'POINT(2 3)',
                                           max_error=0.000000001) == 0)
Ejemplo n.º 50
0
def ogr_ogdi_1():

    ogrtest.ogdi_ds = None

    # Skip tests when -fsanitize is used because of memleaks in libogdi
    if gdaltest.is_travis_branch('sanitize'):
        print('Skipping because of memory leaks in OGDI')
        ogrtest.ogdi_drv = None
        return 'skip'

    ogrtest.ogdi_drv = ogr.GetDriverByName('OGDI')
    if ogrtest.ogdi_drv is None:
        return 'skip'

    if not gdaltest.download_file('http://freefr.dl.sourceforge.net/project/ogdi/OGDI_Test_Suite/3.1/ogdits-3.1.0.zip', 'ogdits-3.1.0.zip'):
        return 'skip'

    try:
        os.stat('tmp/cache/ogdits-3.1')
    except OSError:
        try:
            gdaltest.unzip('tmp/cache', 'tmp/cache/ogdits-3.1.0.zip')
            try:
                os.stat('tmp/cache/ogdits-3.1')
            except OSError:
                return 'skip'
        except OSError:
            return 'skip'

    url_name = 'gltp:/vrf/' + os.getcwd() + '/tmp/cache/ogdits-3.1/data/vpf/vm2alv2/texash'

    ds = ogr.Open(url_name)
    ogrtest.ogdi_ds = ds
    if ds is None:
        gdaltest.post_reason('cannot open ' + url_name)
        return 'fail'
    if ds.GetLayerCount() != 57:
        print(ds.GetLayerCount())
        gdaltest.post_reason('did not get expected layer count')
        return 'fail'

    layers = [('libref@libref(*)_line', ogr.wkbLineString, 15),
              ('libreft@libref(*)_text', ogr.wkbPoint, 4),
              ('markersp@bnd(*)_point', ogr.wkbPoint, 40),
              ('polbnda@bnd(*)_area', ogr.wkbPolygon, 6)]

    for l in layers:
        lyr = ds.GetLayerByName(l[0])
        if lyr.GetLayerDefn().GetGeomType() != l[1]:
            return 'fail'
        if lyr.GetFeatureCount() != l[2]:
            print(lyr.GetFeatureCount())
            return 'fail'
        # if l[1] != ogr.wkbNone:
        #    if lyr.GetSpatialRef().ExportToWkt().find('WGS 84') == -1:
        #        return 'fail'

    lyr = ds.GetLayerByName('libref@libref(*)_line')
    feat = lyr.GetNextFeature()

    wkt = 'LINESTRING (-97.570159912109375 31.242000579833984,-97.569938659667969 31.242116928100586,-97.562828063964844 31.245765686035156,-97.558868408203125 31.247797012329102,-97.555778503417969 31.249361038208008,-97.55413818359375 31.250171661376953)'
    ref_geom = ogr.CreateGeometryFromWkt(wkt)

    if ogrtest.check_feature_geometry(feat, ref_geom) != 0:
        print(feat.GetGeometryRef().ExportToWkt())
        return 'fail'

    return 'success'
Ejemplo n.º 51
0
def test_ogr_toposjon_1():

    ds = ogr.Open('data/topojson/topojson1.topojson')
    lyr = ds.GetLayer(0)
    assert lyr.GetName() == 'a_layer'
    feat = lyr.GetNextFeature()
    assert ogrtest.check_feature_geometry(
        feat, 'LINESTRING (100 1000,110 1000,110 1100)') == 0
    lyr = ds.GetLayer(1)
    assert lyr.GetName() == 'TopoJSON'
    expected_results = [
        (None, None, 'POINT EMPTY'),
        (None, None, 'POINT EMPTY'),
        (None, None, 'POINT EMPTY'),
        (None, None, 'POINT (100 1010)'),
        (None, None, 'LINESTRING EMPTY'),
        (None, None, 'LINESTRING EMPTY'),
        (None, None, 'LINESTRING EMPTY'),
        (None, None, 'LINESTRING EMPTY'),
        (None, None, 'LINESTRING EMPTY'),
        (None, None, 'LINESTRING EMPTY'),
        (None, None, 'LINESTRING EMPTY'),
        (None, None, 'LINESTRING EMPTY'),
        (None, '0', 'LINESTRING EMPTY'),
        (None, 'foo', 'LINESTRING EMPTY'),
        ('1', None, 'LINESTRING (100 1000,110 1000,110 1100)'),
        ('2', None, 'LINESTRING (110 1100,110 1000,100 1000)'),
        (None, None, 'POLYGON EMPTY'),
        (None, None, 'POLYGON EMPTY'),
        (None, None, 'POLYGON EMPTY'),
        (None, None,
         'POLYGON ((100 1000,110 1000,110 1100,100 1100,100 1000),(101 1010,101 1090,109 1090,109 1010,101 1010))'
         ),
        (None, None,
         'POLYGON ((110 1100,110 1000,100 1000,100 1100,110 1100),(101 1010,109 1010,109 1090,101 1090,101 1010))'
         ),
        (None, None, 'MULTIPOINT EMPTY'),
        (None, None, 'MULTIPOINT EMPTY'),
        (None, None, 'MULTIPOINT EMPTY'),
        (None, None, 'MULTIPOINT EMPTY'),
        (None, None, 'MULTIPOINT (100 1010,101 1020)'),
        (None, None, 'MULTIPOLYGON EMPTY'),
        (None, None, 'MULTIPOLYGON EMPTY'),
        (None, None, 'MULTIPOLYGON EMPTY'),
        (None, None,
         'MULTIPOLYGON (((110 1100,110 1000,100 1000,100 1100,110 1100)),((101 1010,109 1010,109 1090,101 1090,101 1010)))'
         ),
        (None, None, 'MULTILINESTRING EMPTY'),
        (None, None, 'MULTILINESTRING EMPTY'),
        (None, None, 'MULTILINESTRING ((100 1000,110 1000,110 1100))'),
        (None, None,
         'MULTILINESTRING ((100 1000,110 1000,110 1100,100 1100,100 1000))'),
        (None, None,
         'MULTILINESTRING ((100 1000,110 1000,110 1100,100 1100,100 1000),(101 1010,101 1090,109 1090,109 1010,101 1010))'
         ),
    ]
    assert lyr.GetFeatureCount() == len(expected_results)
    for i, exp_result in enumerate(expected_results):
        feat = lyr.GetNextFeature()
        if feat.GetField('id') != exp_result[0] or \
           feat.GetField('name') != exp_result[1] or \
           feat.GetGeometryRef().ExportToWkt() != exp_result[2]:
            feat.DumpReadable()
            print(exp_result)
            print(feat.GetField('name'))
            pytest.fail('failure at feat index %d' % i)
    ds = None
Ejemplo n.º 52
0
def ogr_htf_1():

    ds = ogr.Open('data/test.htf')
    if ds is None:
        gdaltest.post_reason('cannot open dataset')
        return 'fail'

    lyr = ds.GetLayer(0)
    if lyr.GetName() != 'polygon':
        gdaltest.post_reason('layer 0 is not polygon')
        return 'fail'

    lyr = ds.GetLayerByName('polygon')
    if lyr is None:
        gdaltest.post_reason('cannot find layer polygon')
        return 'fail'

    feat = lyr.GetNextFeature()
    geom = feat.GetGeometryRef()
    if ogrtest.check_feature_geometry(
            feat,
            'POLYGON ((320830 7678810,350840 7658030,308130 7595560,278310 7616820,320830 7678810))',
            max_error=0.0000001) != 0:
        gdaltest.post_reason('did not get expected first geom')
        print(geom.ExportToWkt())
        return 'fail'

    feat = lyr.GetNextFeature()
    geom = feat.GetGeometryRef()
    if ogrtest.check_feature_geometry(
            feat,
            'POLYGON ((320830 7678810,350840 7658030,308130 7595560,278310 7616820,320830 7678810),(0 0,0 1,1 1,0 0))',
            max_error=0.0000001) != 0:
        gdaltest.post_reason('did not get expected first geom')
        print(geom.ExportToWkt())
        return 'fail'

    if feat.GetField('IDENTIFIER') != 2:
        gdaltest.post_reason('did not get expected identifier')
        print(feat.GetField('IDENTIFIER'))
        return 'fail'

    lyr = ds.GetLayerByName('sounding')
    if lyr is None:
        gdaltest.post_reason('cannot find layer sounding')
        return 'fail'

    if lyr.GetFeatureCount() != 2:
        gdaltest.post_reason('did not get expected feature count')
        return 'fail'

    feat = lyr.GetNextFeature()
    geom = feat.GetGeometryRef()
    if ogrtest.check_feature_geometry(
            feat, 'POINT (278670 7616330)', max_error=0.0000001) != 0:
        gdaltest.post_reason('did not get expected first geom')
        print(geom.ExportToWkt())
        return 'fail'

    if feat.GetField('other3') != 'other3':
        gdaltest.post_reason('did not get expected other3 val')
        print(feat.GetField('other3'))
        return 'fail'

    return 'success'
Ejemplo n.º 53
0
def ogr_dgn_8():

    if gdaltest.dgn_ds is None:
        return 'skip'

    dgn2_ds = ogr.Open('tmp/dgn7.dgn')

    dgn2_lyr = dgn2_ds.GetLayerByName('elements')

    # Test first first, a text element.
    feat = dgn2_lyr.GetNextFeature()
    if feat.GetField('Type') != 17 or feat.GetField('Level') != 1:
        gdaltest.post_reason('feature 1: expected attributes')
        return 'fail'

    if feat.GetField('Text') != 'Demo Text':
        gdaltest.post_reason('feature 1: expected text')
        return 'fail'

    if ogrtest.check_feature_geometry(feat, 'POINT (0.73650000 4.21980000)'):
        return 'fail'

    if feat.GetStyleString() != 'LABEL(t:"Demo Text",c:#ffffff,s:1.000g,f:ENGINEERING)':
        gdaltest.post_reason('feature 1: Style string different than expected.')
        return 'fail'

    # Check second element, a circle.

    feat = dgn2_lyr.GetNextFeature()
    if feat.GetField('Type') != 12 or feat.GetField('Level') != 2:
        gdaltest.post_reason('feature 2: expected attributes')
        return 'fail'

    geom = feat.GetGeometryRef()
    if geom.GetCoordinateDimension() != 2:
        gdaltest.post_reason('feature 2: expected 2d circle.')
        return 'fail'

    if geom.GetGeometryName() != 'MULTILINESTRING':
        gdaltest.post_reason('feature 2: Expected MULTILINESTRING.')
        return 'fail'

    genvelope = geom.GetEnvelope()
    if genvelope[0] < 0.3285 or genvelope[0] > 0.3287 \
       or genvelope[1] < 9.6878 or genvelope[1] > 9.6879 \
       or genvelope[2] < -0.0962 or genvelope[2] > -0.0960 \
       or genvelope[3] < 9.26310 or genvelope[3] > 9.2632:
        gdaltest.post_reason('feature 2: geometry extents seem odd')
        print(genvelope)
        return 'fail'

    # Check 3rd feature, a polygon

    feat = dgn2_lyr.GetNextFeature()
    if feat.GetField('Type') != 6 or feat.GetField('Level') != 2 \
       or feat.GetField('ColorIndex') != 83:
        gdaltest.post_reason('feature 3: expected attributes')
        return 'fail'

    wkt = 'POLYGON ((4.53550000 3.31700000,4.38320000 2.65170000,4.94410000 2.52350000,4.83200000 3.33310000,4.53550000 3.31700000))'

    if ogrtest.check_feature_geometry(feat, wkt):
        return 'fail'

    # should be: 'BRUSH(fc:#b40000,id:"ogr-brush-0")'
    if feat.GetStyleString() != 'PEN(id:"ogr-pen-0",c:#b40000)':
        gdaltest.post_reason('feature 3: Style string different than expected: ' + feat.GetStyleString())
        return 'fail'

    dgn2_ds = None

    return 'success'
Ejemplo n.º 54
0
def ogr_pdf_online_1():

    if ogr.GetDriverByName('PDF') is None:
        return 'skip'

    # Check read support
    gdal_pdf_drv = gdal.GetDriverByName('PDF')
    md = gdal_pdf_drv.GetMetadata()
    if 'HAVE_POPPLER' not in md and 'HAVE_PODOFO' not in md and 'HAVE_PDFIUM' not in md:
        return 'skip'

    if not gdaltest.download_file(
            'http://www.terragotech.com/images/pdf/webmap_urbansample.pdf',
            'webmap_urbansample.pdf'):
        return 'skip'

    expected_layers = [
        ["Cadastral Boundaries", ogr.wkbPolygon],
        ["Water Lines", ogr.wkbLineString],
        ["Sewerage Lines", ogr.wkbLineString],
        ["Sewerage Jump-Ups", ogr.wkbLineString],
        ["Roads", ogr.wkbUnknown],
        ["Water Points", ogr.wkbPoint],
        ["Sewerage Pump Stations", ogr.wkbPoint],
        ["Sewerage Man Holes", ogr.wkbPoint],
        ["BPS - Buildings", ogr.wkbPolygon],
        ["BPS - Facilities", ogr.wkbPolygon],
        ["BPS - Water Sources", ogr.wkbPoint],
    ]

    ds = ogr.Open('tmp/cache/webmap_urbansample.pdf')
    if ds is None:
        gdaltest.post_reason('fail')
        return 'fail'

    if ds.GetLayerCount() != len(expected_layers):
        gdaltest.post_reason('fail')
        print(ds.GetLayerCount())
        return 'fail'

    for i in range(ds.GetLayerCount()):
        if ds.GetLayer(i).GetName() != expected_layers[i][0]:
            gdaltest.post_reason('fail')
            print('%d : %s' % (i, ds.GetLayer(i).GetName()))
            return 'fail'

        if ds.GetLayer(i).GetGeomType() != expected_layers[i][1]:
            gdaltest.post_reason('fail')
            print('%d : %d' % (i, ds.GetLayer(i).GetGeomType()))
            return 'fail'

    lyr = ds.GetLayerByName('Water Points')
    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry(
            feat,
            ogr.CreateGeometryFromWkt(
                'POINT (724431.316665166523308 7672947.212302438914776)')
    ) != 0:
        feat.DumpReadable()
        return 'fail'
    if feat.GetField('ID') != 'VL46':
        gdaltest.post_reason('fail')
        return 'fail'

    return 'success'
def ogr_factory_7():

    src_wkt = 'LINESTRING(2 5,10 20)'
    exp_wkt = 'LINESTRING(2 5,10 20)'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToLineString(src_geom)

    if ogrtest.check_feature_geometry(dst_geom, exp_wkt):
        print(dst_geom.ExportToWkt())
        return 'fail'

    src_wkt = 'MULTILINESTRING((2 5,10 20))'
    exp_wkt = 'LINESTRING(2 5,10 20)'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToLineString(src_geom)

    if ogrtest.check_feature_geometry(dst_geom, exp_wkt):
        print(dst_geom.ExportToWkt())
        return 'fail'

    src_wkt = 'MULTICURVE((2 5,10 20))'
    exp_wkt = 'LINESTRING(2 5,10 20)'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToLineString(src_geom)

    if ogrtest.check_feature_geometry(dst_geom, exp_wkt):
        print(dst_geom.ExportToWkt())
        return 'fail'

    src_wkt = 'MULTICURVE(COMPOUNDCURVE((2 5,10 20)))'
    exp_wkt = 'LINESTRING(2 5,10 20)'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToLineString(src_geom)

    if ogrtest.check_feature_geometry(dst_geom, exp_wkt):
        print(dst_geom.ExportToWkt())
        return 'fail'

    src_wkt = 'MULTILINESTRING((2 5,10 20),(3 4,30 40))'
    exp_wkt = 'MULTILINESTRING((2 5,10 20),(3 4,30 40))'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToLineString(src_geom)

    if ogrtest.check_feature_geometry(dst_geom, exp_wkt):
        print(dst_geom.ExportToWkt())
        return 'fail'

    src_wkt = 'MULTILINESTRING((2 5,10 20),(10 20,30 40))'
    exp_wkt = 'LINESTRING (2 5,10 20,30 40)'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToLineString(src_geom)

    if ogrtest.check_feature_geometry(dst_geom, exp_wkt):
        print(dst_geom.ExportToWkt())
        return 'fail'

    src_wkt = 'GEOMETRYCOLLECTION(LINESTRING(2 5,10 20),LINESTRING(10 20,30 40))'
    exp_wkt = 'LINESTRING (2 5,10 20,30 40)'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToLineString(src_geom)

    if ogrtest.check_feature_geometry(dst_geom, exp_wkt):
        print(dst_geom.ExportToWkt())
        return 'fail'

    src_wkt = 'MULTILINESTRING((2 5,10 20),(10 20))'
    exp_wkt = 'MULTILINESTRING((2 5,10 20),(10 20))'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToLineString(src_geom)

    if ogrtest.check_feature_geometry(dst_geom, exp_wkt):
        print(dst_geom.ExportToWkt())
        return 'fail'

    src_wkt = 'MULTILINESTRING((2 5,10 20),(10 20,30 40),(30 40,50 60))'
    exp_wkt = 'LINESTRING (2 5,10 20,30 40,50 60)'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToLineString(src_geom)

    if ogrtest.check_feature_geometry(dst_geom, exp_wkt):
        print(dst_geom.ExportToWkt())
        return 'fail'

    src_wkt = 'POLYGON ((0 0,0 1,1 1,1 0,0 0))'
    exp_wkt = 'LINESTRING (0 0,0 1,1 1,1 0,0 0)'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToLineString(src_geom)

    if ogrtest.check_feature_geometry(dst_geom, exp_wkt):
        print(dst_geom.ExportToWkt())
        return 'fail'

    src_wkt = 'CURVEPOLYGON ((0 0,0 1,1 1,1 0,0 0))'
    exp_wkt = 'LINESTRING (0 0,0 1,1 1,1 0,0 0)'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToLineString(src_geom)

    if ogrtest.check_feature_geometry(dst_geom, exp_wkt):
        print(dst_geom.ExportToWkt())
        return 'fail'

    src_wkt = 'CURVEPOLYGON (COMPOUNDCURVE((0 0,0 1,1 1,1 0,0 0)))'
    exp_wkt = 'LINESTRING (0 0,0 1,1 1,1 0,0 0)'

    src_geom = ogr.CreateGeometryFromWkt(src_wkt)
    dst_geom = ogr.ForceToLineString(src_geom)

    if ogrtest.check_feature_geometry(dst_geom, exp_wkt):
        print(dst_geom.ExportToWkt())
        return 'fail'

    return 'success'
Ejemplo n.º 56
0
def test_ogr_pdf_2(name='tmp/ogr_pdf_1.pdf', has_attributes=True):

    if not has_read_support():
        pytest.skip()

    ds = ogr.Open(name)
    assert ds is not None

    lyr = ds.GetLayerByName('first_layer')
    assert lyr is not None

    if has_attributes:
        assert lyr.GetLayerDefn().GetFieldDefn(
            lyr.GetLayerDefn().GetFieldIndex(
                'strfield')).GetType() == ogr.OFTString
        assert lyr.GetLayerDefn().GetFieldDefn(
            lyr.GetLayerDefn().GetFieldIndex(
                'intfield')).GetType() == ogr.OFTInteger
        assert lyr.GetLayerDefn().GetFieldDefn(
            lyr.GetLayerDefn().GetFieldIndex(
                'realfield')).GetType() == ogr.OFTReal
    else:
        assert lyr.GetLayerDefn().GetFieldCount() == 0

    if has_attributes:
        feat = lyr.GetNextFeature()
    # This won't work properly until text support is added to the
    # PDF vector feature reader
    # if ogrtest.check_feature_geometry(feat, ogr.CreateGeometryFromWkt('POINT(2 49)')) != 0:
    #    feat.DumpReadable()
    #    gdaltest.post_reason('fail')
    #    return 'fail'

    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry(
            feat, ogr.CreateGeometryFromWkt('LINESTRING(2 48,3 50)')) != 0:
        feat.DumpReadable()
        pytest.fail()

    if has_attributes:
        if feat.GetField('strfield') != 'str':
            feat.DumpReadable()
            pytest.fail()
        if feat.GetField('intfield') != 1:
            feat.DumpReadable()
            pytest.fail()
        if feat.GetFieldAsDouble('realfield') != pytest.approx(2.34,
                                                               abs=1e-10):
            feat.DumpReadable()
            pytest.fail()

    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry(
            feat,
            ogr.CreateGeometryFromWkt(
                'POLYGON((2 48,2 49,3 49,3 48,2 48))')) != 0:
        feat.DumpReadable()
        pytest.fail()

    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry(
            feat,
            ogr.CreateGeometryFromWkt(
                'POLYGON((2 48,2 49,3 49,3 48,2 48),(2.25 48.25,2.25 48.75,2.75 48.75,2.75 48.25,2.25 48.25))'
            )) != 0:
        feat.DumpReadable()
        pytest.fail()

    for i in range(10):
        feat = lyr.GetNextFeature()
        if ogrtest.check_feature_geometry(
                feat,
                ogr.CreateGeometryFromWkt('POINT(%f 49.1)' %
                                          (2 + i * 0.05))) != 0:
            feat.DumpReadable()
            pytest.fail('fail with ogr-sym-%d' % i)

    feat = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry(
            feat, ogr.CreateGeometryFromWkt('POINT(2.5 49.1)')) != 0:
        feat.DumpReadable()
        pytest.fail('fail with raster icon')

    ds = None
Ejemplo n.º 57
0
def test_ogr_gmt_5():

    #######################################################
    # Create gmtory Layer
    gmt_drv = ogr.GetDriverByName('GMT')
    gmt_ds = gmt_drv.CreateDataSource('tmp/mpoly.gmt')
    gmt_lyr = gmt_ds.CreateLayer('mpoly')

    #######################################################
    # Setup Schema
    ogrtest.quick_create_layer_def(gmt_lyr, [('ID', ogr.OFTInteger)])

    #######################################################
    # Write a first multipolygon

    dst_feat = ogr.Feature(feature_def=gmt_lyr.GetLayerDefn())
    dst_feat.SetGeometryDirectly(
        ogr.CreateGeometryFromWkt(
            'MULTIPOLYGON(((0 0,0 10,10 10,0 10,0 0),(3 3,4 4, 3 4,3 3)),((12 0,14 0,12 3,12 0)))'
        ))
    dst_feat.SetField('ID', 15)
    gdal.SetConfigOption('GMT_USE_TAB', 'TRUE')  # Ticket #6453
    gmt_lyr.CreateFeature(dst_feat)
    gdal.SetConfigOption('GMT_USE_TAB', None)

    dst_feat = ogr.Feature(feature_def=gmt_lyr.GetLayerDefn())
    dst_feat.SetGeometryDirectly(
        ogr.CreateGeometryFromWkt('MULTIPOLYGON(((30 20,40 20,30 30,30 20)))'))
    dst_feat.SetField('ID', 16)
    gmt_lyr.CreateFeature(dst_feat)

    gmt_lyr = None
    gmt_ds = None

    # Reopen.

    ds = ogr.Open('tmp/mpoly.gmt')
    lyr = ds.GetLayer(0)

    assert lyr.GetLayerDefn().GetGeomType() == ogr.wkbMultiPolygon, \
        'did not get expected multipolygon type.'

    feat = lyr.GetNextFeature()

    assert not ogrtest.check_feature_geometry(
        feat,
        'MULTIPOLYGON(((0 0,0 10,10 10,0 10,0 0),(3 3,4 4, 3 4,3 3)),((12 0,14 0,12 3,12 0)))'
    )

    assert feat.GetField('ID') == 15, 'got wrong id, first feature'

    feat = lyr.GetNextFeature()

    assert not ogrtest.check_feature_geometry(
        feat, 'MULTIPOLYGON(((30 20,40 20,30 30,30 20)))')

    assert feat.GetField('ID') == 16, 'got wrong ID, second feature'

    feat = lyr.GetNextFeature()

    assert feat is None, 'did not get null feature when expected.'
Ejemplo n.º 58
0
def ogr_interlis_arc1():

    if not gdaltest.have_ili_reader:
        return 'skip'

    ds = ogr.Open('data/ili/Beispiel.itf,data/ili/Beispiel.ili')

    length_0_1_deg = 72.7181992353  # Line length with 0.1 degree segments

    #Read Area lines
    lyr = ds.GetLayerByName('Bodenbedeckung__BoFlaechen_Form')
    if lyr.GetFeatureCount() != 4:
        gdaltest.post_reason('feature count wrong.')
        return 'fail'

    #Get 3rd feature
    feat = lyr.GetNextFeature()
    feat = lyr.GetNextFeature()
    feat = lyr.GetNextFeature()

    geom = feat.GetGeometryRef()
    length = geom.Length()
    if abs(length - length_0_1_deg) > 0.001:  #72.7177335946
        gdaltest.post_reason('Length() result wrong, got %g.' % length)
        return 'fail'
    if ogrtest.check_feature_geometry(
            geom,
            'MULTILINESTRING ((186.38 206.82 0,186.460486424448106 206.327529546107257 0,186.532365795904212 205.833729416057821 0,186.595616219215486 205.338750026154884 0,186.650218427690277 204.84274215191553 0,186.696155788966905 204.345856882143238 0,186.733414310080178 203.848245572904574 0,186.761982641723563 203.350059801424834 0,186.781852081706546 202.851451319916038 0,186.793016577605215 202.352572009351746 0,186.795472728605944 201.853573833202773 0,186.789219786541395 201.354608791147427 0,186.774259656118232 200.855828872771127 0,186.75059689433715 200.357386011268773 0,186.718238709104583 199.859432037164538 0,186.677194957037244 199.362118632062675 0,186.627478140459601 198.865597282444014 0,186.569103403595591 198.370019233521532 0,186.502088527955578 197.875535443169724 0,186.426453926919834 197.382296535941265 0,186.342222639520543 196.890452757185443 0,186.249420323423806 196.400153927281849 0,186.148075247114093 195.911549396003693 0,186.038218281283434 195.424787997024453 0,185.919882889427811 194.940018002581581 0,185.793105117653909 194.457387078311513 0,185.65792358369913 193.977042238269064 0,185.514379465168304 193.499129800145766 0,185.362516486990415 193.023795340699877 0,185.202380908099769 192.551183651412458 0,185.034021507344988 192.081438694382314 0,184.857489568630456 191.614703558473906 0,184.672838865294779 191.151120415730986 0,184.480125643730986 190.690830478069671 0,184.279408606253213 190.233973954263888 0,184.070748893215466 189.780690007236473 0,183.854210064387644 189.331116711668756 0,183.629858079594698 188.885391011941635 0,183.397761278624529 188.44364868042112 0,183.26 188.19 0,183.157990360411077 188.006024276100675 0,182.910618361498763 187.572651103613168 0,182.655720633794772 187.143661172625173 0,182.393374821616248 186.719185157625333 0,182.123660838038973 186.299352358119819 0,181.846660840555074 185.884290659246403 0,181.562459206047208 185.474126492819352 0,181.271142505086345 185.06898479881707 0,180.972799475561658 184.668988987324269 0,180.667520995650023 184.274260900939993 0,180.355400056133732 183.884920777663154 0,180.036531732074565 183.501087214266903 0,179.711013153852946 183.122877130172981 0,179.378943477581203 182.750405731836764 0,179.040423854899558 182.383786477654411 0,178.695557402164354 182.023131043402287 0,178.344449169037915 181.668549288219367 0,177.987206106489339 181.320149221143225 0,177.623937034216141 180.978036968209295 0,177.254752607496783 180.642316740123988 0,176.879765283484062 180.313090800520911 0,176.499089286949413 179.990459434810589 0,176.112840575489088 179.674520919632386 0,175.721136804202303 179.365371492918626 0,175.324097289852261 179.063105324579453 0,174.921842974521269 178.767814487817873 0,174.514496388770482 178.479588931083327 0,174.102181614316009 178.198516450672486 0,173.685024246232274 177.924682663985692 0,173.26315135469477 177.658170983447064 0,172.836691446272965 177.399062591096254 0,172.405774424786216 177.147436413859566 0,171.970531551733643 176.903369099508211 0,171.531095406310641 176.666934993310434 0,171.087599845024073 176.438206115385384 0,170.64017996091809 176.217252138765019 0,170.188972042423671 176.004140368171022 0,170.18 176.0 0,170.18 176.0 0,140.69 156.63 0))'
    ) != 0:
        gdaltest.post_reason('Ili curve not correctly read')
        print(geom.ExportToWkt())
        return 'fail'
    line = geom.GetGeometryRef(0)
    points = line.GetPoints()
    if len(points) != 80:
        gdaltest.post_reason('line point count wrong.')
        return 'fail'

    #Get 4th feature
    feat = lyr.GetNextFeature()

    geom = feat.GetGeometryRef()
    length = geom.Length()
    if abs(length - 98.0243498288) > 0.0000000001:
        gdaltest.post_reason('Length() result wrong, got %g.' % length)
        return 'fail'
    if ogrtest.check_feature_geometry(
            geom,
            'MULTILINESTRING ((186.38 206.82 0,194.26 208.19 0,194.363742877465398 207.560666258887778 0,194.456486566153643 206.929617805490125 0,194.538202815438581 206.297046863278979 0,194.608866733759072 205.663146119491216 0,194.66845679620107 205.028108666434122 0,194.716954851054254 204.392127942667628 0,194.754346125341328 203.755397674081081 0,194.780619229317949 203.118111814882468 0,194.795766159942076 202.48046448851801 0,194.799782303311986 201.842649928540311 0,194.792666436071414 201.204862419443032 0,194.774420725782534 200.567296237479837 0,194.745050730265405 199.930145591485967 0,194.704565395905178 199.293604563720407 0,194.652977054926907 198.657867050746546 0,194.590301421638998 198.023126704369332 0,194.516557587646503 197.389576872647183 0,194.431768016035619 196.757410540996148 0,194.335958534531215 196.126820273404775 0,194.229158327629534 195.497998153777246 0,194.111399927708163 194.87113572742274 0,193.982719205116467 194.246423942708901 0,193.843155357249145 193.624053092897014 0,193.692750896606185 193.004212758177033 0,193.531551637843307 192.387091747919413 0,193.359606683816367 191.772878043162052 0,193.176968410623942 191.161758739349466 0,192.983692451653383 190.553919989341608 0,192.779837680634046 189.949546946710058 0,192.565466193703969 189.348823709338234 0,192.340643290494768 188.751933263343574 0,192.105437454240644 188.159057427338212 0,191.859920330917817 187.570376797045014 0,191.604166707420404 186.986070690286709 0,191.338254488779711 186.406317092363707 0,191.062264674433465 185.831292601838129 0,190.776281333552674 185.261172376740149 0,190.75 185.21 0,190.480391579433388 184.696130081213255 0,190.174685542961015 184.136337832614316 0,189.859256345155728 183.581966149085105 0,189.534200068806825 183.033183897610741 0,189.199615729204936 182.490158242581202 0,188.855605243981131 181.953054594871418 0,188.502273402061718 181.422036561455485 0,188.139727831748502 180.897265895570513 0,187.768078967934287 180.378902447444887 0,187.387440018463224 179.867104115606367 0,186.997926929646695 179.362026798784797 0,186.599658350944793 178.863824348423634 0,186.192755598824732 178.372648521815478 0,185.777342619806575 177.88864893587521 0,185.35354595270789 177.411973021565359 0,184.921494690098939 176.94276597898704 0,184.481320438979651 176.481170733150748 0,184.033157280690972 176.027327890439949 0,183.577141730072384 175.58137569578102 0,183.113412693878161 175.143449990532446 0,182.642111428464915 174.713684171106365 0,182.163381496763719 174.292209148334592 0,181.677368724549325 173.879153307591992 0,181.184221156020271 173.47464246968903 0,180.684089008703126 173.078799852545501 0,180.177124627694894 172.691746033657182 0,179.663482439257081 172.313598913366803 0,179.143318903776049 171.944473678950402 0,178.616792468103654 171.584482769530155 0,178.084063517292776 171.233735841824398 0,177.545294325742475 170.8923397367451 0,177.000649007767692 170.560398446852986 0,176.450293467608361 170.238013084680574 0,175.894395348893454 169.925281851932226 0,175.333123983575007 169.622300009570893 0,174.766650340348065 169.329159848800828 0,174.195146972571933 169.045950662954681 0,174.1 169.0 0,174.1 169.0 0,145.08 149.94 0,140.69 156.63 0))'
    ) != 0:
        gdaltest.post_reason('Ili curve not correctly read')
        print(geom.ExportToWkt())
        return 'fail'
    line = geom.GetGeometryRef(0)
    points = line.GetPoints()
    if len(points) != 81:
        gdaltest.post_reason('line point count wrong.')
        return 'fail'

    ds.Destroy()

    #0.1 deg instead of default (1 deg) (max deg for ili sementizer is about 1.3 degrees)
    os.environ['ARC_DEGREES'] = '0.1'
    #GML: gdal.SetConfigOption('OGR_ARC_STEPSIZE','0.1')
    ds = ogr.Open('data/ili/Beispiel.itf,data/ili/Beispiel.ili')

    #Read Area lines
    lyr = ds.GetLayerByName('Bodenbedeckung__BoFlaechen_Form')
    #Get 3rd feature
    feat = lyr.GetNextFeature()
    feat = lyr.GetNextFeature()
    feat = lyr.GetNextFeature()

    geom = feat.GetGeometryRef()
    length = geom.Length()
    if abs(length - length_0_1_deg) > 0.0000000001:
        gdaltest.post_reason('Length() result wrong, got %g.' % length)
        return 'fail'
    line = geom.GetGeometryRef(0)
    points = line.GetPoints()
    if len(points) != 755:  #80 for 1 deg
        gdaltest.post_reason('line point count wrong.')
        return 'fail'

    ds.Destroy()

    #Compare with GML segmentation
    gml = """<gml:Curve xmlns:gml="http://www.opengis.net/gml" srsName="foo">
             <gml:segments>
              <gml:Arc interpolation="circularArc3Points" numArc="1">
               <gml:pos>186.38 206.82</gml:pos>
               <gml:pos>183.26 188.19</gml:pos>
               <gml:pos>170.18 176.00</gml:pos>
              </gml:Arc>
              <gml:LineStringSegment interpolation="linear">
               <gml:pos>170.18 176.00</gml:pos>
               <gml:pos>140.69 156.63</gml:pos>
              </gml:LineStringSegment>
             </gml:segments>
            </gml:Curve>"""
    gdal.SetConfigOption(
        'OGR_ARC_STEPSIZE',
        '6')  #Default: 4 [The largest step in degrees along the arc]
    geom = ogr.CreateGeometryFromGML(gml)
    gdal.SetConfigOption('OGR_ARC_STEPSIZE', None)
    length = geom.Length()
    if abs(length - length_0_1_deg) > 0.7:  #72.7016803283
        gdaltest.post_reason('Length() result wrong, got %g.' % length)
        return 'fail'
    if geom.ExportToWkt(
    ) != 'LINESTRING (186.38 206.82,186.73341431008015 203.848245572904574,186.774259656118232 200.85582887277107,186.50208852795555 197.875535443169667,185.919882889427782 194.940018002581496,185.03402150734496 192.081438694382229,183.854210064387615 189.331116711668642,183.26 188.19,181.68314072585477 185.646431467588712,179.849044341893887 183.281623546451669,177.777805591909413 181.121485567040764,175.492117401080691 179.189684453096334,173.017022247537511 177.507385421878126,170.37963779172901 176.093020093615877,170.18 176.0,140.69 156.63)':
        gdaltest.post_reason('<gml:Curve> not correctly parsed')
        print(geom.ExportToWkt())
        return 'fail'
    points = geom.GetPoints()
    if len(points) != 16:
        gdaltest.post_reason('line point count wrong.')
        return 'fail'

    gdal.SetConfigOption('OGR_ARC_STEPSIZE', '10')  #Default: 4
    geom = ogr.CreateGeometryFromGML(gml)
    gdal.SetConfigOption('OGR_ARC_STEPSIZE', None)

    length = geom.Length()
    if abs(length - length_0_1_deg) > 0.7:  #72.6745269621
        gdaltest.post_reason('Length() result wrong, got %g.' % length)
        return 'fail'
    if ogrtest.check_feature_geometry(
            geom,
            'LINESTRING (186.38 206.82,186.795472728605944 201.853573833202745,186.342222639520514 196.890452757185358,185.03402150734496 192.081438694382229,183.26 188.19,180.48780698927294 184.04838770890612,177.038546392511279 180.451082079119971,173.017022247537511 177.507385421878126,170.18 176.0,140.69 156.63)'
    ) != 0:
        gdaltest.post_reason('<gml:Curve> not correctly parsed')
        print(geom.ExportToWkt())
        return 'fail'
    points = geom.GetPoints()
    if len(points) != 10:
        gdaltest.post_reason('line point count wrong.')
        return 'fail'

    return 'success'
Ejemplo n.º 59
0
def test_ogr_gtm_check_write_1():
    if not gdaltest.have_gtm:
        pytest.skip()

    ds = ogr.Open('tmp/gtm.gtm')
    lyr = ds.GetLayerByName('gtm_waypoints')
    assert lyr.GetFeatureCount() == 2, 'Bad feature count.'

    # Test 1st waypoint
    feat = lyr.GetNextFeature()

    assert feat.GetField('name') == 'WAY0000000', 'Wrong name field value'

    assert feat.GetField(
        'comment') == 'Waypoint 0', 'Wrong comment field value'

    assert feat.GetField('icon') == 10, 'Wrong icon field value'

    assert feat.GetField(
        'time') == '2009/12/23 14:25:46', 'Wrong time field value'

    wkt = 'POINT (-21 -47)'
    assert not ogrtest.check_feature_geometry(feat, wkt), 'Unexpected geometry'

    # Test 2nd waypoint
    feat = lyr.GetNextFeature()

    assert feat.GetField('name') == 'WAY0000001', 'Wrong name field value'

    assert feat.GetField(
        'comment') == 'Waypoint 1', 'Wrong comment field value'

    assert feat.GetField('icon') == 31, 'Wrong icon field value'

    assert feat.GetField('time') is None, 'Wrong time field value'

    wkt = 'POINT (-21.123 -47.231 800)'
    assert not ogrtest.check_feature_geometry(feat, wkt), 'Unexpected geometry'

    # Test tracks
    lyr = ds.GetLayerByName('gtm_tracks')
    assert lyr.GetFeatureCount() == 4, 'Bad feature count.'

    # Test 1st track
    feat = lyr.GetNextFeature()

    assert feat.GetField('name') == '1st Street', 'Wrong name field value'

    assert feat.GetField('type') == 2, 'Wrong type field value'

    assert feat.GetField('color') == 0x0000FF, 'Wrong color field value'

    wkt = 'LINESTRING (-21.1 -47.1, -21.2 -47.2, -21.3 -47.3, -21.4 -47.4)'
    assert not ogrtest.check_feature_geometry(feat, wkt), 'Unexpected geometry'

    # Test 2nd track
    feat = lyr.GetNextFeature()

    assert feat.GetField('name') == '2nd Street', 'Wrong name field value'

    assert feat.GetField('type') == 1, 'Wrong type field value'

    assert feat.GetField('color') == 0x000000, 'Wrong color field value'

    wkt = 'LINESTRING (-21.11 -47.1, -21.21 -47.2, -21.31 -47.3, -21.41 -47.4)'
    assert not ogrtest.check_feature_geometry(feat, wkt), 'Unexpected geometry'

    # Test 3rd track
    feat = lyr.GetNextFeature()

    assert feat.GetField('name') == '3rd Street', 'Wrong name field value'

    assert feat.GetField('type') == 2, 'Wrong type field value'

    assert feat.GetField('color') == 0x000000, 'Wrong color field value'

    wkt = 'LINESTRING (-21.12 -47.1, -21.22 -47.2, -21.32 -47.3, -21.42 -47.4)'
    assert not ogrtest.check_feature_geometry(feat, wkt), 'Unexpected geometry'

    # Test 4th track
    feat = lyr.GetNextFeature()

    assert feat.GetField('name') == '3rd Street', 'Wrong name field value'

    assert feat.GetField('type') == 2, 'Wrong type field value'

    assert feat.GetField('color') == 0x000000, 'Wrong color field value'

    wkt = 'LINESTRING (-21.12 -47.1, -21.02 -47.0, -20.92 -46.9)'
    assert not ogrtest.check_feature_geometry(feat, wkt), 'Unexpected geometry'
Ejemplo n.º 60
0
def test_ogrtindex_3():

    if test_cli_utilities.get_ogrtindex_path() is None:
        pytest.skip()

    shape_drv = ogr.GetDriverByName('ESRI Shapefile')

    for basename in ['tileindex', 'point1', 'point2', 'point3', 'point4']:
        for extension in ['shp', 'dbf', 'shx', 'prj']:
            try:
                os.remove('tmp/%s.%s' % (basename, extension))
            except OSError:
                pass

    shape_ds = shape_drv.CreateDataSource('tmp')

    srs_4326 = osr.SpatialReference()
    srs_4326.ImportFromEPSG(4326)
    wkt_epsg_4326 = srs_4326.ExportToWkt()

    srs_32631 = osr.SpatialReference()
    srs_32631.ImportFromEPSG(32631)
    wkt_epsg_32631 = srs_32631.ExportToWkt()

    shape_lyr = shape_ds.CreateLayer('point1', srs=srs_4326)
    dst_feat = ogr.Feature(feature_def=shape_lyr.GetLayerDefn())
    dst_feat.SetGeometry(ogr.CreateGeometryFromWkt('POINT(2 49)'))
    shape_lyr.CreateFeature(dst_feat)

    shape_lyr = shape_ds.CreateLayer('point2', srs=srs_32631)
    dst_feat = ogr.Feature(feature_def=shape_lyr.GetLayerDefn())
    dst_feat.SetGeometry(
        ogr.CreateGeometryFromWkt('POINT(500000 5538630.70286887)'))
    shape_lyr.CreateFeature(dst_feat)
    shape_ds = None

    for (src_srs_format, expected_srss) in [
        ('', ['EPSG:4326', 'EPSG:32631']),
        ('-src_srs_format AUTO', ['EPSG:4326', 'EPSG:32631']),
        ('-src_srs_format EPSG', ['EPSG:4326', 'EPSG:32631']),
        ('-src_srs_format PROJ', [
            '+proj=longlat +datum=WGS84 +no_defs',
            '+proj=utm +zone=31 +datum=WGS84 +units=m +no_defs'
        ]), ('-src_srs_format WKT', [wkt_epsg_4326, wkt_epsg_32631])
    ]:

        if os.path.exists('tmp/tileindex.shp'):
            shape_drv.DeleteDataSource('tmp/tileindex.shp')
        if os.path.exists('tmp/tileindex.db'):
            os.unlink('tmp/tileindex.db')

        output_filename = 'tmp/tileindex.shp'
        output_format = ''
        if src_srs_format == '-src_srs_format WKT':
            if ogr.GetDriverByName('SQLite') is None:
                continue
            output_filename = 'tmp/tileindex.db'
            output_format = ' -f SQLite'

        (_, err) = gdaltest.runexternal_out_and_err(
            test_cli_utilities.get_ogrtindex_path() +
            ' -src_srs_name src_srs -t_srs EPSG:4326 ' + output_filename +
            ' tmp/point1.shp tmp/point2.shp ' + src_srs_format + output_format)

        assert src_srs_format == '-src_srs_format WKT' or (err is None or err == ''), \
            'got error/warning'

        ds = ogr.Open(output_filename)
        assert ds.GetLayer(0).GetFeatureCount() == 2, \
            'did not get expected feature count'

        assert ds.GetLayer(0).GetSpatialRef().GetAuthorityCode(None) == '4326', \
            'did not get expected spatial ref'

        expected_wkts = [
            'POLYGON ((2 49,2 49,2 49,2 49,2 49))',
            'POLYGON ((3 50,3 50,3 50,3 50,3 50))'
        ]
        i = 0
        feat = ds.GetLayer(0).GetNextFeature()
        while feat is not None:
            if feat.GetField('src_srs') != expected_srss[i]:
                feat.DumpReadable()
                pytest.fail(i, src_srs_format)
            assert ogrtest.check_feature_geometry(feat, expected_wkts[i]) == 0, \
                ('i=%d, wkt=%s' % (i, feat.GetGeometryRef().ExportToWkt()))
            i = i + 1
            feat = ds.GetLayer(0).GetNextFeature()
        ds = None

    if os.path.exists('tmp/tileindex.shp'):
        shape_drv.DeleteDataSource('tmp/tileindex.shp')
    if os.path.exists('tmp/tileindex.db'):
        os.unlink('tmp/tileindex.db')