[gdal-dev] Need help if OGR C-API
Stephen Woodbridge
woodbri at swoodbridge.com
Fri Sep 3 13:14:49 EDT 2010
On 9/3/2010 1:04 PM, Frank Warmerdam wrote:
> Stephen Woodbridge wrote:
>> Hi all,
>>
>> Trying to convert a shapelib program over to OGR and have to say it is
>> very complicated.
>>
>> I'm using: GDAL 1.7.2, released 2010/04/23
>>
>> At the moment I stuck on:
>>
>> hDSin = OGROpen( "Streets.shp", FALSE, NULL );
>> hLayerIn = OGR_DS_GetLayerByName( hDSin, "Streets" );
>>
>> hFDefnIn = OGR_L_GetLayerDefn( hLayerIn );
>> layerGeomType = OGR_FD_GetGeomType( hFDefnIn );
>>
>> And always returns: layerGeomType == wkbUnknown
>>
>> And OGR_L_GetGeomType( hLayerIn ) does not appear until 1.8.
> ...
>
>> So how do I get the geometry type of the shapefile?
>
> Steve,
>
> Hmm, that's odd. You should be getting wkbLineString or wkbLineString25D.
> Does ogrinfo report the layer type properly? It is essentially using
> the same mechanism. Perhaps GDAL/OGR 1.7.2 did not always return the layer
> geometry type - it is technically inaccurate to return wkbLineString since
> the shapefile could also contain multilinestrings and we can't know unless
> they are all read which we don't want to do on open.
>
> The current trunk code reports linestring, but this is an area of behavior
> on which I have vacillated (correctness vs. handiness).
>
Hi Frank,
One thing that would be very nice is to change the name space for the
embedded shapelib function so libshp can be linked to a program with
ogr. I can see that using ogr has lots of benefits, but it is
complicated relative shapelib if that is all you need.
Back to the current problem, here is what shpdump reports and ogrinfo.
These both look ok.
-Steve
woodbri at mappy:~/dev/elevation$ shpdump Streets.shp | head
Shapefile Type: Arc # of Shapes: 102958
File Bounds: ( -71.889, 42.157,0,0)
to ( -71.021, 42.734,0,0)
Shape:0 (Arc) nVertices=3, nParts=1
Bounds:( -71.563, 42.267, 0, 0)
to ( -71.563, 42.267, 0, 0)
( -71.563, 42.267, 0, 0) Ring
( -71.563, 42.267, 0, 0)
ogrinfo Streets.shp Streets
INFO: Open of `Streets.shp'
using driver `ESRI Shapefile' successful.
Layer name: Streets
Geometry: Line String
Feature Count: 102958
Extent: (-71.888528, 42.156701) - (-71.020913, 42.734315)
Layer SRS WKT:
(unknown)
LINK_ID: Integer (10.0)
NAME: String (80.0)
L_REFADDR: Integer (10.0)
L_NREFADDR: Integer (10.0)
L_SQLNUMF: String (12.0)
L_SQLFMT: String (16.0)
L_CFORMAT: String (16.0)
R_REFADDR: Integer (10.0)
R_NREFADDR: Integer (10.0)
R_SQLNUMF: String (12.0)
R_SQLFMT: String (16.0)
R_CFORMAT: String (16.0)
L_AC5: String (35.0)
L_AC4: String (35.0)
L_AC3: String (35.0)
L_AC2: String (35.0)
L_AC1: String (35.0)
R_AC5: String (35.0)
R_AC4: String (35.0)
R_AC3: String (35.0)
R_AC2: String (35.0)
R_AC1: String (35.0)
L_POSTCODE: String (11.0)
R_POSTCODE: String (11.0)
MTFCC: Integer (5.0)
PASSFLG: String (1.0)
DIVROAD: String (1.0)
OGRFeature(Streets):0
LINK_ID (Integer) = 40037470
NAME (String) = I- 90
L_REFADDR (Integer) = 0
L_NREFADDR (Integer) = 0
L_SQLNUMF (String) = (null)
L_SQLFMT (String) = (null)
L_CFORMAT (String) = (null)
R_REFADDR (Integer) = 0
R_NREFADDR (Integer) = 0
R_SQLNUMF (String) = (null)
R_SQLFMT (String) = (null)
R_CFORMAT (String) = (null)
L_AC5 (String) = (null)
L_AC4 (String) = (null)
L_AC3 (String) = Middlesex
L_AC2 (String) = MA
L_AC1 (String) = US
R_AC5 (String) = (null)
R_AC4 (String) = Hopkinton
R_AC3 (String) = Middlesex
R_AC2 (String) = MA
R_AC1 (String) = US
L_POSTCODE (String) = (null)
R_POSTCODE (String) = (null)
MTFCC (Integer) = 1100
PASSFLG (String) = (null)
DIVROAD (String) = Y
LINESTRING (-71.563116999999991
42.267372999999999,-71.563024999999996 42.267412999999998,-71.562956
42.267443)
...
More information about the gdal-dev
mailing list