[FWTools] Re: shapefile extent not updated after changing shape
geometries
Bryan Keith
bryan at geomega.com
Wed Sep 20 10:38:14 EDT 2006
This issue is still unresolved. Sorry the script could be condensed and
still illustrate the problem, but I think it's reasonably clear. Is
this sort of question better sent to gdal-dev?
Notice in the final ogrinfo block that all (two) of the features in the
dataset have the correct geometry, but the extent is incorrect.
Bryan
Bryan Keith wrote:
> I'm running a short Python script to offset and scale the geometry in a
> line shapefile. The geometry features move as planned, but the extent
> of the shapefile doesn't update as expected according the ogrinfo. The
> max xy are changed, but the min xy remain unchanged. Below I've pasted
> the Python script followed by the ogrinfo output. Do I need to add
> something to the Python script to get the extents refreshed? (I think
> this information is the shx file).
>
> Bryan
>
> #mine_to_utm.py
> import ogr
> #include the .shp extension
> #sShpName = "section_lines_test_ln.shp"
> sShpName = "test_utm_lnz.shp"
> dXOffset = 1711586.62
> dYOffset = 14712509.9
> dScale = 0.3048
> ogrdriver = ogr.GetDriverByName("ESRI Shapefile")
> ogrSDS = ogrdriver.Open(sShpName, 1)
> mLayer = ogrSDS.GetLayerByName(sShpName[:-4])
> for i in range(mLayer.GetFeatureCount()):
> mFeature = mLayer.GetFeature(i)
> mGeom = mFeature.GetGeometryRef()
> #only process simple LINESTRING
> if (mGeom.GetGeometryCount() == 0):
> #create new wkt geometry
> sWkt = "LINESTRING ("
> for j in range(mGeom.GetPointCount()):
> dX = mGeom.GetX(j)
> dY = mGeom.GetY(j)
> dZ = mGeom.GetZ(j)
> dXNew = (dX + dXOffset) * dScale
> dYNew = (dY + dYOffset) * dScale
> sWkt += str(dXNew) + " " + str(dYNew) + " " + str(dZ) + ","
> sWkt = sWkt[:-1] + ")"
> newGeom = ogr.CreateGeometryFromWkt(sWkt)
> mFeature.SetGeometryDirectly(newGeom)
> mLayer.SetFeature(mFeature)
> else:
> print "Geometry not supported."
> print mGeom
> break
> ogrSDS.Destroy()
>
> S:\>ogrinfo -al test_utm_lnz.shp
> INFO: Open of `test_utm_lnz.shp'
> using driver `ESRI Shapefile' successful.
>
> Layer name: test_utm_lnz
> Geometry: 3D Line String
> Feature Count: 2
> Extent: (25197.816780, 14676.458434) - (30479.027175, 30724.795652)
> Layer SRS WKT:
> (unknown)
> FID_: Integer (9.0)
> OGRFeature(test_utm_lnz):0
> FID_ (Integer) = (null)
> LINESTRING (30409.466042881133 30667.436514034867 0,25433.42988651176
> 30724.79
> 5651653782 0)
>
> OGRFeature(test_utm_lnz):1
> FID_ (Integer) = (null)
> LINESTRING (30479.027175426483 14678.760769195855
> 0,25197.816779945977 14676.4
> 58433972672 0)
>
>
> S:\>mine_to_utm.py
>
> S:\>ogrinfo -al test_utm_lnz.shp
> INFO: Open of `test_utm_lnz.shp'
> using driver `ESRI Shapefile' successful.
>
> Layer name: test_utm_lnz
> Geometry: 3D Line String
> Feature Count: 2
> Extent: (25197.816780, 14676.458434) - (530981.609259, 4493737.935230)
> Layer SRS WKT:
> (unknown)
> FID_: Integer (9.0)
> OGRFeature(test_utm_lnz):0
> FID_ (Integer) = (null)
> LINESTRING (530960.40702599997 4493720.4521700004
> 0,529443.71120500006 4493737
> .9352299999 0)
>
> OGRFeature(test_utm_lnz):1
> FID_ (Integer) = (null)
> LINESTRING (530981.60925900005 4488847.1037999997
> 0,529371.89633100003 4488846
> .4020499997 0)
>
> Bryan Keith
> GIS Specialist
> Geomega, Inc.
> Boulder, CO, USA
>
More information about the FWTools
mailing list