GEOS代表几何引擎 - 开源,是从Java拓扑套件移植的C ++库。 GEOS实现了OpenGIS SQL的简单特性空间谓词函数和空间运算符。 GEOS,现在是OSGeo项目,最初由加拿大维多利亚的折射研究开发和维护。
GeoDjango为GEOS库实现了一个高级Python包装器,其功能包括:
ctypes
在Python中实现。GEOSGeometry
对象可以在Django项目/应用程序之外使用。 换句话说,无需设置DJANGO_SETTINGS_MODULE
或使用数据库等。GEOSGeometry
对象可以修改。本节包含使用GEOSGeometry
对象的简要介绍和教程。
GEOSGeometry
对象可以通过几种方式创建。 第一种是简单地在一些空间输入上实例化对象 - 以下是从WKT,HEX,WKB和GeoJSON创建相同几何的示例:
>>> from django.contrib.gis.geos import GEOSGeometry
>>> pnt = GEOSGeometry('POINT(5 23)') # WKT
>>> pnt = GEOSGeometry('010100000000000000000014400000000000003740') # HEX
>>> pnt = GEOSGeometry(buffer('\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14@\x00\x00\x00\x00\x00\x007@'))
>>> pnt = GEOSGeometry('{ "type": "Point", "coordinates": [ 5.000000, 23.000000 ] }') # GeoJSON
另一个选项是使用您希望创建的特定几何类型的构造函数。 例如,可以通过将X和Y坐标传递到其构造函数中来创建Point
对象:
>>> from django.contrib.gis.geos import Point
>>> pnt = Point(5, 23)
所有这些构造函数都使用关键字参数srid
。 像这样:
>>> from django.contrib.gis.geos import GEOSGeometry, LineString, Point
>>> print(GEOSGeometry('POINT (0 0)', srid=4326))
SRID=4326;POINT (0 0)
>>> print(LineString((0, 0), (1, 1), srid=4326))
SRID=4326;LINESTRING (0 0, 1 1)
>>> print(Point(0, 0, srid=32140))
SRID=32140;POINT (0 0)
最后,从文件中返回GEOSGeometry
对象的fromfile()
factory method
>>> from django.contrib.gis.geos import fromfile
>>> pnt = fromfile('/path/to/pnt.wkt')
>>> pnt = fromfile(open('/path/to/pnt.wkt'))
GEOSGeometry
对象是“Pythonic”,换句话说,组件可以使用标准Python约定访问,修改和迭代。
例如,您可以在Point
中的坐标上进行迭代:
>>> pnt = Point(5, 23)
>>> [coord for coord in pnt]
[5.0, 23.0]
对于任何几何对象,GEOSGeometry.coords
属性可用于获取几何坐标作为Python元组:
>>> pnt.coords
(5.0, 23.0)
您可以使用标准的Python索引技术获取/设置几何组件。 但是,返回的内容取决于对象的几何类型。 例如,对LineString
的索引返回一个坐标元组:
>>> from django.contrib.gis.geos import LineString
>>> line = LineString((0, 0), (0, 50), (50, 50), (50, 0), (0, 0))
>>> line[0]
(0.0, 0.0)
>>> line[-2]
(50.0, 0.0)
而在Polygon
上的索引将返回对应于索引的环(LinearRing
对象)
>>> from django.contrib.gis.geos import Polygon
>>> poly = Polygon( ((0.0, 0.0), (0.0, 50.0), (50.0, 50.0), (50.0, 0.0), (0.0, 0.0)) )
>>> poly[0]
<LinearRing object at 0x1044395b0>
>>> poly[0][-2] # second-to-last coordinate of external ring
(50.0, 0.0)
此外,几何的坐标/组件可以添加或修改,就像Python列表:
>>> line[0] = (1.0, 1.0)
>>> line.pop()
(0.0, 0.0)
>>> line.append((1.0, 1.0))
>>> line.coords
((1.0, 1.0), (0.0, 50.0), (50.0, 50.0), (50.0, 0.0), (1.0, 1.0))
几何支持set-like操作符:
>>> from django.contrib.gis.geos import LineString
>>> ls1 = LineString((0, 0), (2, 2))
>>> ls2 = LineString((1, 1), (3, 3))
>>> print(ls1 | ls2) # equivalent to `ls1.union(ls2)`
MULTILINESTRING ((0 0, 1 1), (1 1, 2 2), (2 2, 3 3))
>>> print(ls1 & ls2) # equivalent to `ls1.intersection(ls2)`
LINESTRING (1 1, 2 2)
>>> print(ls1 - ls2) # equivalent to `ls1.difference(ls2)`
LINESTRING(0 0, 1 1)
>>> print(ls1 ^ ls2) # equivalent to `ls1.sym_difference(ls2)`
MULTILINESTRING ((0 0, 1 1), (2 2, 3 3))
平等运算符不检查空间平等
GEOSGeometry
等式运算符使用equals_exact()
,而不是equals()
,即要求相同的几何在同一位置具有相同的坐标具有相同的SRID:
>>> from django.contrib.gis.geos import LineString
>>> ls1 = LineString((0, 0), (1, 1))
>>> ls2 = LineString((1, 1), (0, 0))
>>> ls3 = LineString((1, 1), (0, 0), srid=4326)
>>> ls1.equals(ls2)
True
>>> ls1 == ls2
False
>>> ls3 == ls2 # different SRIDs
False
当使用相等运算符比较GEOSGeometry
对象时,旧版本没有检查srid
。
GEOSGeometry
¶这是所有GEOS几何对象的基类。 它在给定的geo_input
参数上初始化,然后假设正确的几何子类(例如GEOSGeometry('POINT(1 1) t4>
会创建一个Point
对象)。
接受以下输入格式及其对应的Python类型:
格式 | 输入类型 |
---|---|
WKT / EWKT | str 或unicode |
HEX / HEXEWKB | str 或unicode |
WKB / EWKB | 缓冲 |
GeoJSON | str 或unicode |
GEOSGeometry。
from_gml T0>( gml_string T1>)¶ T2>
从给定的GML字符串构造一个GEOSGeometry
。
GEOSGeometry。
COORDS T0> ¶ T1>
返回几何的坐标作为元组。
GEOSGeometry。
变暗 T0> ¶ T1>
返回几何尺寸:
0
for Point
s and MultiPoint
s1
for LineString
s and MultiLineString
s2
for Polygon
s and MultiPolygon
s-1
为空GeometryCollection
sGeometryCollection
sGEOSGeometry。
空 T0> ¶ T1>
返回几何中的点集是否为空。
GEOSGeometry。
geom_type T0> ¶ T1>
返回与几何类型对应的字符串。 像这样:
>>> pnt = GEOSGeometry('POINT(5 23)')
>>> pnt.geom_type
'Point'
GEOSGeometry。
geom_typeid T0> ¶ T1>
返回GEOS几何类型标识号。 下表显示了每种几何类型的值:
几何 | ID |
---|---|
点 |
0 |
线串 |
1 |
线性环 |
2 |
多边形 |
3 |
多点 |
4 |
MULTILINESTRING |
5 |
的MultiPolygon |
6 |
的GeometryCollection |
7 |
GEOSGeometry。
num_coords T0> ¶ T1>
返回几何中的坐标数。
GEOSGeometry。
num_geom T0> ¶ T1>
返回此几何中的几何的数量。 换句话说,除了几何集合,将返回1。
GEOSGeometry。
hasz T0> ¶ T1>
返回一个布尔值,表示几何是否是三维的。
GEOSGeometry。
环 T0> ¶ T1>
返回一个布尔值,表示几何是否为LinearRing
。
GEOSGeometry。
简单 T0> ¶ T1>
返回一个布尔值,表示几何是否为'简单'。 当且仅当它不与自身相交(除了边界点),几何是简单的。 例如,如果LineString
对象与自身相交,则它不是简单的。 因此,LinearRing
和Polygon
对象总是很简单,因为它们根据定义不能相交。
GEOSGeometry。
有效的 T0> ¶ T1>
返回一个布尔值,表示几何是否有效。
GEOSGeometry。
valid_reason T0> ¶ T1>
返回一个字符串,描述几何无效的原因。
GEOSGeometry。
SRID T0> ¶ T1>
可用于检索或设置与几何关联的SRID的属性。 像这样:
>>> pnt = Point(5, 23)
>>> print(pnt.srid)
None
>>> pnt.srid = 4326
>>> pnt.srid
4326
此部分中的属性将GEOSGeometry
对象导出为不同的对象。 此输出可以是字符串,缓冲区或甚至另一个对象的形式。
GEOSGeometry。
EWKT T0> ¶ T1>
返回几何的“扩展”已知文本。 该表示是PostGIS特有的,是OGC WKT标准的超集。 [1]实质上,SRID是在WKT表示之前的,例如SRID = 4326; POINT(5 23) t1>。
注
此属性的输出不包括PostGIS在其EWKT表示中支持的3dm,3dz和4d信息。
GEOSGeometry。
六角 T0> ¶ T1>
以十六进制形式返回此几何的WKB。 请注意,SRID值不包含在此表示中,因为它不是OGC规范的一部分(而是使用GEOSGeometry.hexewkb
属性)。
GEOSGeometry。
hexewkb T0> ¶ T1>
返回此几何以十六进制形式的EWKB。 这是WKB规范的扩展,包括作为此几何的一部分的SRID值。
GEOSGeometry。
JSON T0> ¶ T1>
返回几何的GeoJSON表示。 请注意,结果不是GeoJSON结构中完整的GeoJSON结构,而只是GeoJSON结构的geometry
键内容。 另见GeoJSON Serializer。
GEOSGeometry。
以GeoJSON T0> ¶ T1>
GEOSGeometry。
OGR T0> ¶ T1>
返回与GEOS几何对应的OGRGeometry
对象。
GEOSGeometry。
WKB T0> ¶ T1>
将此几何的WKB(Well-Known Binary)表示形式作为Python缓冲区。 不包括SRID值,请改用GEOSGeometry.ewkb
属性。
GEOSGeometry。
EWKB T0> ¶ T1>
将此几何的EWKB表示形式作为Python缓冲区。 这是WKB规范的扩展,包括作为此几何的一部分的任何SRID值。
GEOSGeometry。
WKT T0> ¶ T1>
返回几何的已知文本(OGC标准)。
从输出中剥离非重要的零。
所有以下空间谓词方法都将另一个GEOSGeometry
实例(other
)作为参数,并返回布尔值。
GEOSGeometry。
contains
(other)¶如果other.within(this)
返回True
,则返回True
。
GEOSGeometry。
covers
(other)¶如果此几何涵盖指定的几何,则返回True
。
covers
谓词具有以下等效定义:
T*****FF*
,*T****FF*
,***T**FF*
或****T*FF*
。如果两个几何都为空,则返回False
。
该谓词类似于GEOSGeometry.contains()
,但是更多的包含性(即对于更多的情况,返回True
)。 特别地,与contains()
不同,它不区分边界和几何内部的点。 对于大多数情况,covers()
应该优先于contains()
。 作为一个额外的好处,covers()
更适合优化,因此应该优于contains()
。
GEOSGeometry。
crosses
(other)¶如果两个几何的DE-9IM交集矩阵为0********
,则返回T*T******
(对于点和曲线,或线和面积)True
(对于两条曲线)。
GEOSGeometry。
disjoint
(other)¶如果两个几何的DE-9IM交集矩阵为True
,则返回FF*FF****
。
GEOSGeometry。
等于 T0>(其他 T1>)¶ T2>
如果两个几何的DE-9IM交集矩阵为True
,则返回T*F**FFF*
。
GEOSGeometry。
equals_exact
(other,tolerance = 0)¶如果两个几何完全相等,则返回true,直到指定的容差。 tolerance
值应为表示比较中误差容限的浮点数,例如poly1.equals_exact(poly2, 0.001) t4 >
将比较等于一个单位的千分之一。
GEOSGeometry。
intersects
(other)¶如果GEOSGeometry.disjoint()
为True
,则返回False
。
GEOSGeometry。
overlaps
(other)¶如果两个几何的DE-9IM交叉矩阵为T*T***T**
(对于两个点或两个表面),则返回true 1*T***T**
(两条曲线)。
GEOSGeometry。
relation_pattern
(其他,模式)¶如果此几何的DE-9IM交叉矩阵中的元素与其他匹配给定的*
- 字母表中的九个字符的字符串,则返回0
:{T
,pattern
,True
,F
}。
GEOSGeometry。
touches
(other)¶Returns True
if the DE-9IM intersection matrix for the two geometries
is FT*******
, F**T*****
or F***T****
.
GEOSGeometry。
within
(other)¶如果两个几何的DE-9IM交集矩阵为True
,则返回T*F**F***
。
GEOSGeometry。
缓冲区
(width,quadsegs = 8)¶返回GEOSGeometry
,表示与该几何的距离小于或等于给定width
的所有点。 可选的quadsegs
关键字设置用于近似四分之一圆的分段数(默认值为8)。
GEOSGeometry。
差 T0>(其他 T1>)¶ T2>
返回GEOSGeometry
,表示构成此几何的点,而不构成其他点。
GEOSGeometry。
插值 T0>(距离 T1>)¶ T2>
GEOSGeometry。
interpolate_normalized T0>(距离 T1>)¶ T2>
给定距离(float),返回几何中的点(或最近点)(LineString
或MultiLineString
)。
归一化版本将距离作为0(原点)和1(端点)之间的浮点。
GEOSGeometry。
相交 T0>(其他 T1>)¶ T2>
返回GEOSGeometry
,表示由此几何和其他共享的点。
GEOSGeometry。
项目 T0>(点 T1>)¶ T2>
GEOSGeometry。
project_normalized T0>(点 T1>)¶ T2>
从几何原点(LineString
或MultiLineString
)返回距离(float)到投影在几何体上的点(即距离最接近给定点)。 标准化版本返回0(原点)和1(端点)之间的浮点距离。
GEOSGeometry。
涉及 T0>(其他 T1>)¶ T2>
返回表示此几何与其他几何之间的拓扑关系的DE-9IM交集矩阵(一个字符串)。
GEOSGeometry。
简化
(tolerance = 0.0,preserve_topology = False)¶返回新的GEOSGeometry
,使用Douglas-Peucker算法简化为指定的公差。 较高的公差值意味着输出中的点数较少。 如果未提供容差,则默认为0。
默认情况下,此功能不保留拓扑。 例如,Polygon
对象可以拆分,折叠成线或消失。 Polygon
孔可以创建或消失,线可以交叉。 通过指定preserve_topology=True
,结果将具有与输入相同的维度和数量的组件;这是明显更慢,但是。
GEOSGeometry。
sym_difference T0>(其他 T1>)¶ T2>
返回GEOSGeometry
组合此几何中不在其他中的点,以及其他不在此几何中的点。
GEOSGeometry。
联合 T0>(其他 T1>)¶ T2>
返回GEOSGeometry
,表示此几何中的所有点和其他点。
GEOSGeometry。
边界 T0> ¶ T1>
将边界返回为新分配的几何对象。
GEOSGeometry。
unary_union T0> ¶ T1>
计算该几何的所有元素的并集。
结果符合以下合同:
LineString
具有完全编码和解析线条的作用。Polygon
将始终返回一个Polygon
或MultiPolygon
几何(不同于GEOSGeometry.union()
,如果发生拓扑崩溃,其可以返回较小维度的几何形状)。GEOSGeometry。
区域 T0> ¶ T1>
此属性返回几何的面积。
GEOSGeometry。
程度 T0> ¶ T1>
这个属性返回这个几何的范围作为一个4元组,由(xmin, ymin, xmax, ymax)
。
GEOSGeometry。
克隆 T0>()¶ T1>
此方法返回一个GEOSGeometry
,它是原始的克隆。
GEOSGeometry。
距离 T0>(的geom T1>)¶ T2>
返回此几何图形上最接近的点与给定geom
(另一个GEOSGeometry
对象)之间的距离。
注
GEOS距离计算是线性的 - 换句话说,即使SRID指定地理坐标系,GEOS也不执行球面计算。
GEOSGeometry。
长度 T0> ¶ T1>
返回此几何的长度(例如,对于Point
为0,LineString
的长度或Polygon
的圆周)。
GEOSGeometry。
制备 T0> ¶ T1>
返回此几何的内容的GEOS PreparedGeometry
。
PreparedGeometry
对象针对包含,相交,覆盖,交叉,不相交,重叠,触摸和在操作中进行了优化。 有关详细信息,请参阅Prepared Geometries文档。
GEOSGeometry。
SRS T0> ¶ T1>
返回与几何的SRID或None
对应的SpatialReference
对象。
GEOSGeometry。
转换
(ct,clone = False)¶根据给定的坐标变换参数(ct
)变换几何,其可以是整数SRID,空间参考WKT字符串,PROJ.4字符串,SpatialReference
或CoordTransform
对象。 默认情况下,几何将原位转换,不返回任何内容。 但是,如果设置了clone
关键字,则不会修改几何,而是返回几何的转换克隆。
注
如果GDAL不可用或几何的SRID为None
或小于0,则引发GEOSException
。 如果使用CoordTransform
对象调用,它不会对几何的SRID施加任何约束。
在以前的版本中,即使使用CoordTransform
对象调用几何体的SRID也是一个正整数。
GEOSGeometry。
归一化 T0>()¶ T1>
将此几何转换为规范形式:
>>> g = MultiPoint(Point(0, 0), Point(2, 2), Point(1, 1))
>>> print(g)
MULTIPOINT (0 0, 2 2, 1 1)
>>> g.normalize()
>>> print(g)
MULTIPOINT (2 2, 1 1, 0 0)
Point
¶点
(x =无,y =无,z =无,srid = T4>)¶ T5>Point
对象使用表示点的组件坐标或使用单个序列坐标的参数进行实例化。
例如,以下是等效的:
>>> pnt = Point(5, 23)
>>> pnt = Point([5, 23])
空Point
对象可以通过传递任何参数或空序列来实例化。 以下是等效的:
>>> pnt = Point()
>>> pnt = Point([])
在以前的版本中,无法实例化一个空的Point
。
LineString
¶LineString
(* args,** kwargs)¶LineString
对象使用作为坐标序列或Point
对象的参数来实例化。 例如,以下是等效的:
>>> ls = LineString((0, 0), (1, 1))
>>> ls = LineString(Point(0, 0), Point(1, 1))
此外,还可以通过传递单个坐标序列或Point
对象来创建LineString
对象:
>>> ls = LineString( ((0, 0), (1, 1)) )
>>> ls = LineString( [Point(0, 0), Point(1, 1)] )
空LineString
对象可以通过传递任何参数或空序列来实例化。 以下是等效的:
>>> ls = LineString()
>>> ls = LineString([])
在以前的版本中,无法实例化空的LineString
。
关闭 T0> ¶ T1>
返回此LineString
是否关闭。
LinearRing
¶LinearRing
(* args,** kwargs)¶LinearRing
对象以与LineString
对象完全相同的方式构造,但是坐标必须为closed,换句话说,第一个坐标必须是与最后的坐标相同。 像这样:
>>> ls = LinearRing((0, 0), (0, 1), (1, 1), (0, 0))
注意,(0, 0)
是第一个和最后一个坐标 - 如果它们不相等,
Polygon
¶多边形
(* args,** kwargs)¶可以通过传递表示多边形环的参数来实例化Polygon
对象。 参数必须为LinearRing
实例,或者可用于构建LinearRing
的序列:
>>> ext_coords = ((0, 0), (0, 1), (1, 1), (1, 0), (0, 0))
>>> int_coords = ((0.4, 0.4), (0.4, 0.6), (0.6, 0.6), (0.6, 0.4), (0.4, 0.4))
>>> poly = Polygon(ext_coords, int_coords)
>>> poly = Polygon(LinearRing(ext_coords), LinearRing(int_coords))
在以前的版本中,无法实例化空的Polygon
。
from_bbox T0>( BBOX T1>)¶ T2>
从给定的边界框返回一个多边形对象,一个包含(xmin, ymin, xmax, ymax)
。
num_interior_rings
¶返回此几何中的内环数。
比较多边形
注意,可以直接将>
对象与<
或Polygon
进行比较,但是通过Polygon的LineString
,这并不意味着太多(但是一致和快速)。
您随时可以使用area
属性强制比较:
>>> if poly_1.area > poly_2.area:
>>> pass
MultiPoint
¶MultiLineString
¶MultiLineString
(* args,** kwargs)¶MultiLineString
对象可以通过将LineString
对象作为参数或LineString
对象的单个序列进行实例化:
>>> ls1 = LineString((0, 0), (1, 1))
>>> ls2 = LineString((2, 2), (3, 3))
>>> mls = MultiLineString(ls1, ls2)
>>> mls = MultiLineString([ls1, ls2])
在以前的版本中,无法实例化空的MultiLineString
。
merged
¶返回LineString
,表示此MultiLineString
中所有组件的线合并。
关闭 T0> ¶ T1>
当且仅当所有元素都关闭时才返回True
。 需要GEOS 3.5。
MultiPolygon
¶MultiPolygon
(* args,** kwargs)¶可以通过将Polygon
对象作为参数或Polygon
对象的单个序列来实例化MultiPolygon
对象:
>>> p1 = Polygon( ((0, 0), (0, 1), (1, 1), (0, 0)) )
>>> p2 = Polygon( ((1, 1), (1, 2), (2, 2), (1, 1)) )
>>> mp = MultiPolygon(p1, p2)
>>> mp = MultiPolygon([p1, p2])
在以前的版本中,无法实例化空的MultiPolygon
。
cascaded_union
¶自1.10版以来已弃用 改用GEOSGeometry.unary_union
属性。
GeometryCollection
¶GeometryCollection
(* args,** kwargs)¶可以通过将其他GEOSGeometry
作为参数或GEOSGeometry
对象的单个序列来实例化GeometryCollection
对象:
>>> poly = Polygon( ((0, 0), (0, 1), (1, 1), (0, 0)) )
>>> gc = GeometryCollection(Point(0, 0), MultiPoint(Point(0, 0), Point(1, 1)), poly)
>>> gc = GeometryCollection((Point(0, 0), MultiPoint(Point(0, 0), Point(1, 1)), poly))
在以前的版本中,无法实例化空的GeometryCollection
。
要获取准备好的几何图形,只需访问GEOSGeometry.prepared
属性。 一旦您拥有PreparedGeometry
实例,其空间谓词方法(如下所列)可与其他GEOSGeometry
对象一起使用。 具有准备好的几何的操作可以快几个数量级 - 准备的几何越复杂,操作中的加速越大。 有关详细信息,请参阅准备好的几何体上的GEOS wiki页面。
像这样:
>>> from django.contrib.gis.geos import Point, Polygon
>>> poly = Polygon.from_bbox((0, 0, 5, 5))
>>> prep_poly = poly.prepared
>>> prep_poly.contains(Point(2.5, 2.5))
True
fromfile
(file_h)¶参数: | file_h(Python file 对象或文件的字符串路径) - 包含空间数据的输入文件 |
---|---|
返回类型: | a GEOSGeometry 对应于文件中的空间数据 |
例如:
>>> from django.contrib.gis.geos import fromfile
>>> g = fromfile('/home/bob/geom.wkt')
fromstr
(string,srid = None)¶参数: | |
---|---|
返回类型: | a |
fromstr(string, srid)
等同于GEOSGeometry(string, srid)
例如:
>>> from django.contrib.gis.geos import fromstr
>>> pnt = fromstr('POINT(-90.5 29.5)', srid=4326)
读取器I / O类只是从给它们的read(geom)
方法的WKB和/或WKT输入返回GEOSGeometry
实例。
WKBReader T0> ¶ T1>
例如:
>>> from django.contrib.gis.geos import WKBReader
>>> wkb_r = WKBReader()
>>> wkb_r.read('0101000000000000000000F03F000000000000F03F')
<Point object at 0x103a88910>
WKTReader T0> ¶ T1>
例如:
>>> from django.contrib.gis.geos import WKTReader
>>> wkt_r = WKTReader()
>>> wkt_r.read('POINT(1 1)')
<Point object at 0x103a88b50>
所有writer对象都有一个write(geom)
方法,返回给定几何的WKB或WKT。 此外,WKBWriter
对象还具有可用于更改字节顺序的属性,或者包括SRID值(换句话说,EWKB)。
WKBWriter T0>(暗淡= 2 T1>)¶ T2>
WKBWriter
提供对其输出的最大控制。 默认情况下,当调用write
方法时,它返回符合OGC的WKB。 但是,它具有允许创建EWKB的属性,EWKB是包括附加信息的WKB标准的超集。 有关dim
参数的更多详细信息,请参阅WKBWriter.outdim
文档。
添加了将dim
参数传递给构造函数的功能。
写 T0>(的geom T1>)¶ T2>
以Python buffer
对象的形式返回给定几何的WKB。
例如:
>>> from django.contrib.gis.geos import Point, WKBWriter
>>> pnt = Point(1, 1)
>>> wkb_w = WKBWriter()
>>> wkb_w.write(pnt)
<read-only buffer for 0x103a898f0, size -1, offset 0 at 0x103a89930>
write_hex T0>(的geom T1>)¶ T2>
以十六进制返回几何的WKB。 例如:
>>> from django.contrib.gis.geos import Point, WKBWriter
>>> pnt = Point(1, 1)
>>> wkb_w = WKBWriter()
>>> wkb_w.write_hex(pnt)
'0101000000000000000000F03F000000000000F03F'
字节顺序 T0> ¶ T1>
此属性可以设置为更改几何表示的字节顺序。
字节值 | 描述 |
---|---|
0 | 大端(例如,与RISC系统兼容) |
1 | 小端(例如,与x86系统兼容) |
例如:
>>> from django.contrib.gis.geos import Point, WKBWriter
>>> wkb_w = WKBWriter()
>>> pnt = Point(1, 1)
>>> wkb_w.write_hex(pnt)
'0101000000000000000000F03F000000000000F03F'
>>> wkb_w.byteorder = 0
'00000000013FF00000000000003FF0000000000000'
outdim T0> ¶ T1>
此属性可以设置为更改几何表示的输出尺寸。 换句话说,如果你有一个3D几何体,那么设置为3,使得Z值被包括在WKB中。
Outdim值 | 描述 |
---|---|
2 | 默认情况下,输出2D WKB。 |
3 | 输出3D WKB。 |
例如:
>>> from django.contrib.gis.geos import Point, WKBWriter
>>> wkb_w = WKBWriter()
>>> wkb_w.outdim
2
>>> pnt = Point(1, 1, 1)
>>> wkb_w.write_hex(pnt) # By default, no Z value included:
'0101000000000000000000F03F000000000000F03F'
>>> wkb_w.outdim = 3 # Tell writer to include Z values
>>> wkb_w.write_hex(pnt)
'0101000080000000000000F03F000000000000F03F000000000000F03F'
SRID T0> ¶ T1>
使用布尔值设置此属性,以指示几何的SRID是否应包含在WKB表示中。 例如:
>>> from django.contrib.gis.geos import Point, WKBWriter
>>> wkb_w = WKBWriter()
>>> pnt = Point(1, 1, srid=4326)
>>> wkb_w.write_hex(pnt) # By default, no SRID included:
'0101000000000000000000F03F000000000000F03F'
>>> wkb_w.srid = True # Tell writer to include SRID
>>> wkb_w.write_hex(pnt)
'0101000020E6100000000000000000F03F000000000000F03F'
WKTWriter
(dim = 2,trim = False,precision = None)¶该类允许输出几何的WKT表示。 有关构造函数参数的详细信息,请参阅WKBWriter.outdim
,trim
和precision
属性。
添加了向构造函数传递dim
,trim
和precision
参数的能力。
写 T0>(的geom T1>)¶ T2>
返回给定几何的WKT。 例如:
>>> from django.contrib.gis.geos import Point, WKTWriter
>>> pnt = Point(1, 1)
>>> wkt_w = WKTWriter()
>>> wkt_w.write(pnt)
'POINT (1.0000000000000000 1.0000000000000000)'
outdim T0> ¶ T1>
请参阅WKBWriter.outdim
。
修剪 T0> ¶ T1>
此属性用于启用或禁用不必要的小数的修剪。
>>> from django.contrib.gis.geos import Point, WKTWriter
>>> pnt = Point(1, 1)
>>> wkt_w = WKTWriter()
>>> wkt_w.trim
False
>>> wkt_w.write(pnt)
'POINT (1.0000000000000000 1.0000000000000000)'
>>> wkt_w.trim = True
>>> wkt_w.write(pnt)
'POINT (1 1)'
精度 T0> ¶ T1>
该属性控制坐标的舍入精度;如果设置为None
四舍五入被禁用。
>>> from django.contrib.gis.geos import Point, WKTWriter
>>> pnt = Point(1.44, 1.66)
>>> wkt_w = WKTWriter()
>>> print(wkt_w.precision)
None
>>> wkt_w.write(pnt)
'POINT (1.4399999999999999 1.6599999999999999)'
>>> wkt_w.precision = 0
>>> wkt_w.write(pnt)
'POINT (1 2)'
>>> wkt_w.precision = 1
>>> wkt_w.write(pnt)
'POINT (1.4 1.7)'
脚注
[1] | 请参阅 PostGIS EWKB,EWKT和规范表单,PostGIS文档。 4.1.2. |
[2] | 有关详细信息,请参阅Paul Ramsey的博客文章:PostgIS 1.4中的(Much)Faster Unions和Martin Davis在使用Cascaded Union在JTS中快速合并多边形的博客。 |
2017年9月6日