几何对象
创建一个点
from osgeo
import ogr
point
= ogr
.Geometry
(ogr
.wkbPoint
)
point
.AddPoint
(1198054.34,648493.09)
print(point
.ExportToWkt
())
结果:
POINT
(1198054.34 648493.09 0)
创建一条线
from osgeo
import ogr
line
= ogr
.Geometry
(ogr
.wkbLineString
)
line
.AddPoint
(1116651.439,637392.696)
line
.AddPoint
(1188804.010,652655.740)
line
.AddPoint
(1281307.307,636467.664)
print(line
.ExportToWkt
())
结果:
LINESTRING
(1116651.439 637392.696 0,1188804.01 652655.74 0,1281307.307 636467.664 0)
创建一个多边形
from osgeo
import ogr
ring
= ogr
.Geometry
(ogr
.wkbLinearRing
)
ring
.AddPoint
(1179091,712782)
ring
.AddPoint
(1161053,667456)
ring
.AddPoint
(1214704,641092)
ring
.AddPoint
(1228580, 682719)
ring
.AddPoint
(1218405, 721108)
ring
.AddPoint
(1179091, 712782)
poly
= ogr
.Geometry
(ogr
.wkbPolygon
)
poly
.AddGeometry
(ring
)
print(poly
.ExportToWkt
())
结果:
POLYGON ((1179091 712782 0,1161053 667456 0,1214704 641092 0,1228580 682719 0,1218405 721108 0,1179091 712782 0))
创建一个带孔的多边形
from osgeo
import ogr
outRing
= ogr
.Geometry
(ogr
.wkbLinearRing
)
outRing
.AddPoint
(1154115,686419)
outRing
.AddPoint
(1154115,653118)
outRing
.AddPoint
(1165678,653118)
outRing
.AddPoint
(1165678,686419)
outRing
.AddPoint
(1154115,686419)
innerRing
= ogr
.Geometry
(ogr
.wkbLinearRing
)
innerRing
= ogr
.Geometry
(ogr
.wkbLinearRing
)
innerRing
.AddPoint
(1149490, 691044)
innerRing
.AddPoint
(1149490, 648030)
innerRing
.AddPoint
(1191579, 648030)
innerRing
.AddPoint
(1191579, 691044)
innerRing
.AddPoint
(1149490, 691044)
poly
= ogr
.Geometry
(ogr
.wkbPolygon
)
poly
.AddGeometry
(outRing
)
poly
.AddGeometry
(innerRing
)
print(poly
.ExportToWkt
())
结果:
POLYGON ((1154115 686419 0,1154115 653118 0,1165678 653118 0,1165678 686419 0,1154115 686419 0),(1149490 691044 0,1149490 648030 0,1191579 648030 0,1191579 691044 0,1149490 691044 0))
创建多个点
from osgeo
import ogr
multipoint
= ogr
.Geometry
(ogr
.wkbMultiPoint
)
point1
= ogr
.Geometry
(ogr
.wkbPoint
)
point1
.AddPoint
(1251243,598078)
multipoint
.AddGeometry
(point1
)
point2
= ogr
.Geometry
(ogr
.wkbPoint
)
point2
.AddPoint
(1240605,601778)
multipoint
.AddGeometry
(point2
)
point3
= ogr
.Geometry
(ogr
.wkbPoint
)
point3
.AddPoint
(1250318, 606404)
multipoint
.AddGeometry
(point3
)
print(multipoint
.ExportToWkt
())
结果:
MULTIPOINT (1251243 598078 0,1240605 601778 0,1250318 606404 0)
创建多条线
from osgeo
import ogr
multiline
= ogr
.Geometry
(ogr
.wkbMultiLineString
)
line1
= ogr
.Geometry
(ogr
.wkbLineString
)
line1
.AddPoint
(1214242, 617041)
line1
.AddPoint
(1234593, 629529)
multiline
.AddGeometry
(line1
)
line1
= ogr
.Geometry
(ogr
.wkbLineString
)
line1
.AddPoint
(1184641, 626754)
line1
.AddPoint
(1219792, 606866)
multiline
.AddGeometry
(line1
)
print(multiline
.ExportToWkt
())
结果:
MULTILINESTRING ((1214242 617041 0,1234593 629529 0),(1184641 626754 0,1219792 606866 0))
创建多个多边形
from osgeo
import ogr
multipolygon
= ogr
.Geometry
(ogr
.wkbMultiPolygon
)
ring1
= ogr
.Geometry
(ogr
.wkbLinearRing
)
ring1
.AddPoint
(1204067,634617)
ring1
.AddPoint
(1204067,620742)
ring1
.AddPoint
(1215167,620742)
ring1
.AddPoint
(1215167,634617)
ring1
.AddPoint
(1204067,634617)
poly1
= ogr
.Geometry
(ogr
.wkbPolygon
)
poly1
.AddGeometry
(ring1
)
multipolygon
.AddGeometry
(poly1
)
ring2
= ogr
.Geometry
(ogr
.wkbLinearRing
)
ring2
.AddPoint
(1179553, 647105)
ring2
.AddPoint
(1179553, 626292)
ring2
.AddPoint
(1194354, 626292)
ring2
.AddPoint
(1194354, 647105)
ring2
.AddPoint
(1179553, 647105)
poly2
= ogr
.Geometry
(ogr
.wkbPolygon
)
poly2
.AddGeometry
(ring2
)
multipolygon
.AddGeometry
(poly2
)
print(multipolygon
.ExportToWkt
())
结果:
MULTIPOLYGON (((1204067 634617 0,1204067 620742 0,1215167 620742 0,1215167 634617 0,1204067 634617 0)),((1179553 647105 0,1179553 626292 0,1194354 626292 0,1194354 647105 0,1179553 647105 0)))
创建几何对象集合
from osgeo
import ogr
geomcol
= ogr
.Geometry
(ogr
.wkbGeometryCollection
)
point
= ogr
.Geometry
(ogr
.wkbPoint
)
point
.AddPoint
(-122.23,47.09)
geomcol
.AddGeometry
(point
)
line
= ogr
.Geometry
(ogr
.wkbLineString
)
line
.AddPoint
(-122.6,47.14)
line
.AddPoint
(-122.48,47.23)
geomcol
.AddGeometry
(line
)
print(geomcol
.ExportToWkt
())
结果:
GEOMETRYCOLLECTION (POINT (-122.23 47.09 0),LINESTRING (-122.6 47.14 0,-122.48 47.23 0))
从WKT中创建几何对象
from osgeo
import ogr
wkt
= "POINT(1120351 741921)"
point
= ogr
.CreateGeometryFromWkt
(wkt
)
print("%d,%d"%(point
.GetX
(),point
.GetY
()))
结果:
1120351,741921
从GeoJSON中创建几何对象
from osgeo
import ogr
geojson
= """{"type":"Point","coordinates":[1048420.23,753808.59]}"""
point
= ogr
.CreateGeometryFromJson
(geojson
)
print("%.2f,%.2f"%(point
.GetX
(),point
.GetY
()))
结果:
1048420.23,753808.59
从GML中创建几何对象
from osgeo
import ogr
gml
= """<gml:Point xmlns:gml="http://www.opengis.net/gml"><gml:coordinates>108420.33,753808.59</gml:coordinates></gml:Point>"""
point
= ogr
.CreateGeometryFromGML
(gml
)
print("%.2f,%.2f" % (point
.GetX
(), point
.GetY
()))
结果:
108420.33,753808.59
从WKB中创建几何对象
from osgeo
import ogr
from base64
import b64decode
wkb
= b64decode
("AIAAAAFBMkfmVwo9cUEjylouFHrhAAAAAAAAAAA=")
point
= ogr
.CreateGeometryFromWkb
(wkb
)
print("%.2f,%.2f" % (point
.GetX
(), point
.GetY
()))
结果:
1198054.34,648493.09