GEOS 代表着 Geometry Engine - Open Source ,是一个C++库,从 `Java Topology Suite`_ ②GEOS实现了OpenGIS `Simple Features for SQL`_ _空间谓词函数和空间运算符。GEOS,现在是一个OSGEO项目,最初由 `Refractions Research`_ _加拿大维多利亚州。
geodjango为geos库实现了一个高级的python包装器,其功能包括:
一个获得BSD许可的geos几何例程接口,仅在python中使用 ctypes
.
与GeoDjango松散耦合。 例如, GEOSGeometry
对象可以在Django项目/应用程序之外使用。 换句话说,不需要有 DJANGO_SETTINGS_MODULE
设置或使用数据库等。
Mutability: GEOSGeometry
可以修改对象。
跨平台测试;与Windows、Linux、Solaris和MacOS平台兼容。
本节包含使用的简介和教程 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(
... memoryview(
... b"\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14@\x00\x00\x00\x00\x00\x007@"
... )
... ) # WKB
>>> pnt = GEOSGeometry(
... '{ "type": "Point", "coordinates": [ 5.000000, 23.000000 ] }'
... ) # GeoJSON
另一种选择是使用要创建的特定几何体类型的构造函数。例如,一个 Point
可以通过将X和Y坐标传入其构造函数来创建对象:
>>> 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)
最后,还有 fromfile()
工厂方法,该方法返回 GEOSGeometry
文件中的对象:
>>> 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
将归还戒指(a 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))
几何图形支持类似集合的运算符:
>>> 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
¶geo_input -- 几何输入值(字符串或 memoryview
)
srid (int) -- 空间引用标识符
这是所有地理几何图形对象的基类。它在给定的 geo_input
参数,然后假定正确的几何子类(例如, GEOSGeometry('POINT(1 1)')
将创建一个 Point
对象)。
这个 srid
如果满足以下条件,则将参数设置为所创建几何的SRID geo_input
没有SRID。如果不同的SRID通过 geo_input
和 srid
参数、 ValueError
已提出:
>>> from django.contrib.gis.geos import GEOSGeometry
>>> GEOSGeometry("POINT EMPTY", srid=4326).ewkt
'SRID=4326;POINT EMPTY'
>>> GEOSGeometry("SRID=4326;POINT EMPTY", srid=4326).ewkt
'SRID=4326;POINT EMPTY'
>>> GEOSGeometry("SRID=1;POINT EMPTY", srid=4326)
Traceback (most recent call last):
...
ValueError: Input geometry already has SRID: 1.
接受以下输入格式及其相应的python类型:
格式 |
输入类型 |
---|---|
WKT/EWKT |
|
六角/HEXEWKB |
|
WKB/EWKB |
|
|
对于geojson格式,srid是基于 crs
成员。如果 crs
未提供,srid默认为4326。
构建一个 GEOSGeometry
来自给定的GML字符串。
以元组形式返回几何图形的坐标。
返回几何图形的尺寸:
0
对于 Point
S和 MultiPoint
的S
1
对于 LineString
S和 MultiLineString
的S
2
对于 Polygon
S和 MultiPolygon
的S
-1
为空 GeometryCollection
的S
非空元素的最大维度 GeometryCollection
的S
返回几何图形中的点集是否为空。
返回与几何图形类型对应的字符串。例如:
>>> pnt = GEOSGeometry("POINT(5 23)")
>>> pnt.geom_type
'Point'
返回几何图形类型标识号。下表显示了每种几何图形类型的值:
几何图形 |
ID |
---|---|
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
返回几何图形中的坐标数。
返回此几何图形中的几何图形数。换言之,除了几何集合之外,将返回1。
返回指示几何图形是否为三维的布尔值。
返回一个布尔值,指示几何图形是否为 LinearRing
.
返回一个布尔值,该布尔值指示几何图形是否“简单”。几何图形是简单的,当且仅当它不与自身相交(边界点除外)。例如,一个 LineString
如果对象本身相交,它就不是简单的。因此, LinearRing
和 Polygon
对象总是简单的,因为根据定义,它们不能自己相交。
返回一个布尔值,指示几何图形是否有效。
返回描述几何图形无效原因的字符串。
属性,该属性可用于检索或设置与几何图形关联的SRID。例如:
>>> pnt = Point(5, 23)
>>> print(pnt.srid)
None
>>> pnt.srid = 4326
>>> pnt.srid
4326
此部分中的属性导出 GEOSGeometry
对象转换为另一个。这个输出可以是字符串、缓冲区甚至是另一个对象的形式。
返回几何图形的“扩展”已知文本。这种表示是PostGIS特有的,是OGC WKT标准的超集。 [1] 例如,SRID基本上是在WKT表示之前准备的。 SRID=4326;POINT(5 23)
.
备注
此属性的输出不包括PostGIS在其EWKT表示中支持的3dm、3dz和4d信息。
以十六进制形式返回此几何图形的WKB。请注意,SRID值不包括在该表示中,因为它不是OGC规范的一部分(请使用 GEOSGeometry.hexewkb
属性)。
以十六进制形式返回此几何图形的EWKB。这是wkb规范的扩展,其中包括作为该几何图形一部分的srid值。
返回几何图形的geojson表示形式。注意,结果不是一个完整的geojson结构,而是 geometry
geojson结构的关键内容。也见 GeoJSON 串行化器 .
Alias GEOSGeometry.json
.
返回一个 OGRGeometry
与几何图形相对应的对象。
将此几何图形的wkb(众所周知的二进制)表示形式返回为python缓冲区。不包括srid值,请使用 GEOSGeometry.ewkb
改为属性。
将此几何图形的EWKB表示返回为python缓冲区。这是wkb规范的扩展,其中包括属于此几何图形的任何srid值。
返回几何图形的已知文本(OGC标准)。
以下所有空间谓词方法都采用另一种方法 GEOSGeometry
实例 (other
)作为参数,并返回布尔值。
返回 True
如果 other.within(this)
收益率 True
.
返回 True
如果此几何图形覆盖指定的几何图形。
这个 covers
谓词具有以下等价定义:
其他几何体的每个点都是该几何体的一个点。
这个 DE-9IM 这两个几何图形的相交矩阵为 T*****FF*
, *T****FF*
, ***T**FF*
,或 ****T*FF*
。
如果任一几何体为空,则返回 False
.
这个谓词类似于 GEOSGeometry.contains()
,但更具包容性(即回报 True
更多情况下)。特别是,不像 contains()
它不区分边界和几何图形内部的点。在大多数情况下, covers()
应该优先于 contains()
. 作为附加利益, covers()
更易于优化,因此应优于 contains()
.
返回 True
如果两个几何图形的de-9im交集矩阵为 T*T******
(对于点和曲线、点和区域或线和区域) 0********
(对于两条曲线)。
返回 True
如果两个几何图形的de-9im交集矩阵为 FF*FF****
.
返回 True
如果两个几何图形的de-9im交集矩阵为 T*F**FFF*
.
如果两个几何图形完全相等,则返回“真”,直至达到指定的公差。这个 tolerance
值应该是表示比较中的误差容限的浮点数,例如, poly1.equals_exact(poly2, 0.001)
将等于千分之一单位内。
退货 True
检查所有顶点的结构、顺序和值在所有维度中是否相同,以确定两个几何图形在点上是等价的。 NaN
值被视为等于其他 NaN
价值观。需要GEOS 3.12。
返回 True
如果 GEOSGeometry.disjoint()
是 False
.
如果两个几何图形的de-9im交集矩阵为 T*T***T**
(对于两点或两个表面) 1*T***T**
(对于两条曲线)。
Returns True
if the elements in the DE-9IM intersection matrix
for this geometry and the other matches the given pattern
--
a string of nine characters from the alphabet: {T
, F
, *
, 0
}.
返回 True
如果两个几何图形的de-9im交集矩阵为 FT*******
, F**T*****
或 F***T****
.
返回 True
如果两个几何图形的de-9im交集矩阵为 T*F**F***
.
返回A GEOSGeometry
表示与此几何图形的距离小于或等于给定的 width
. 可选的 quadsegs
关键字设置用于近似四分之一圆的段数(默认值为8)。
等同于 buffer()
,但允许自定义缓冲区的样式。
end_cap_style
可以是圆的 (1
) (2
或平方 (3
)
join_style
可以是圆的 (1
米特 (2
)或斜面 (3
)
斜接比率限制 (mitre_limit
)仅影响斜接连接样式。
返回A GEOSGeometry
表示组成此几何图形的点,而不是组成其他几何图形的点。
给定距离(浮点),返回几何图形中的点(或最近点) (LineString
或 MultiLineString
)在那个距离。标准化版本将距离作为0(原点)和1(端点)之间的浮点值。
返回A GEOSGeometry
表示此几何图形和其他几何图形共享的点。
返回到几何图形原点的距离(浮动) (LineString
或 MultiLineString
)投影到几何体上的点(即最接近给定点的直线点)。标准化版本以0(原点)和1(终点)之间的浮点形式返回距离。
返回表示此几何图形与其他几何图形之间拓扑关系的de-9im交集矩阵(字符串)。
返回新的 GEOSGeometry
,使用Douglas-Peucker算法简化为指定的公差。公差值越高,输出点越少。如果没有提供公差,则默认为0。
默认情况下,此函数不保留拓扑。例如, Polygon
对象可以拆分、折叠成线条或消失。 Polygon
孔可以创建或消失,线可以交叉。通过指定 preserve_topology=True
,结果将具有与输入相同的维度和组件数量;但是,这明显较慢。
返回A GEOSGeometry
组合此几何图形中不在其他几何图形中的点,以及其他不在此几何图形中的点。
返回A GEOSGeometry
表示此几何图形和其他几何图形中的所有点。
将边界作为新分配的几何图形对象返回。
计算此几何图形中所有元素的并集。
结果符合以下合同:
联合一组 LineString
S具有完全点头和分解线条的效果。
联合一组 Polygon
S将始终返回 Polygon
或 MultiPolygon
几何(与 GEOSGeometry.union()
,如果发生拓扑折叠,则可能返回较低维度的几何图形)。
此属性返回几何图形的面积。
此属性以4元组的形式返回此几何图形的范围,包括 (xmin, ymin, xmax, ymax)
.
此方法返回 GEOSGeometry
那是原版的复制品。
返回此几何图形上最近点与给定点之间的距离 geom
(另一) GEOSGeometry
对象)。
备注
地理距离计算是线性的——换句话说,即使SRID指定地理坐标系,GEOS也不执行球形计算。
返回此几何图形的长度(例如,对于 Point
,a的长度 LineString
或A的周长 Polygon
)
返回GEOS PreparedGeometry
用于此几何图形的内容。 PreparedGeometry
对象针对包含、相交、覆盖、交叉、分离、重叠、接触和内部操作进行优化。参考 准备好的几何图形 有关详细信息的文档。
返回A SpatialReference
与几何体的srid相对应的对象或 None
.
根据给定的坐标变换参数变换几何形状 (ct
),它可以是整个SRID、空间参考WKT字符串、PROJ字符串、 SpatialReference
对象,或一个 CoordTransform
object.默认情况下,几何图形会就地转换并且不会返回任何内容。然而如果 clone
设置了关键字,则不会修改几何体,而是返回几何体的转换克隆。
备注
加薪 GEOSException
如果gdal不可用或几何体的srid为 None
或小于0。如果使用 CoordTransform
对象。
返回有效的 GEOSGeometry
等效项,尽量不丢失任何输入顶点。如果几何图形已经有效,则会原封不动地返回。这类似于 MakeValid
数据库功能。需要使用GEOS 3.8。
将此几何图形转换为规范形式。如果 clone
关键字,则不修改几何体,而是返回几何体的规格化克隆:
>>> 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
¶LineString
¶LineString
使用参数实例化对象,参数可以是坐标序列,也可以是 Point
物体。例如,以下内容是等效的:
>>> ls = LineString((0, 0), (1, 1))
>>> ls = LineString(Point(0, 0), Point(1, 1))
此外, LineString
对象也可以通过传入单个坐标序列或 Point
对象:
>>> ls = LineString(((0, 0), (1, 1)))
>>> ls = LineString([Point(0, 0), Point(1, 1)])
空的 LineString
可以通过不传递参数或空序列来实例化对象。以下内容相当:
>>> ls = LineString()
>>> ls = LineString([])
返回是否 LineString
关闭。
LinearRing
¶LinearRing
对象的构造方式与 LineString
对象,但是坐标必须是 closed 换句话说,第一个坐标必须与最后一个坐标相同。例如:
>>> ls = LinearRing((0, 0), (0, 1), (1, 1), (0, 0))
注意到 (0, 0)
是第一个和最后一个坐标——如果它们不相等,就会产生一个错误。
Polygon
¶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
对象直接使用 <
或 >
,但由于比较是通过Polygon的 LineString
,它没有太大的意义(但始终如一、迅速)。您始终可以强制使用 area
物业:
>>> if poly_1.area > poly_2.area:
... pass
...
MultiPoint
¶MultiLineString
¶MultiLineString
对象可以通过传入 LineString
对象作为参数,或单个序列 LineString
对象:
>>> ls1 = LineString((0, 0), (1, 1))
>>> ls2 = LineString((2, 2), (3, 3))
>>> mls = MultiLineString(ls1, ls2)
>>> mls = MultiLineString([ls1, ls2])
返回A LineString
表示此中所有组件的行合并 MultiLineString
.
退货 True
当且仅当所有元素都关闭时。
MultiPolygon
¶GeometryCollection
¶GeometryCollection
对象可以通过传入其他 GEOSGeometry
作为参数,或单个序列 GEOSGeometry
对象:
>>> 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))
为了获得准备好的几何图形,请访问 GEOSGeometry.prepared
财产 一旦你有一个 PreparedGeometry
例如,其空间预测方法(如下所列)可以与其他 GEOSGeometry
对象 具有准备好的几何形状的操作可以快几个数量级--准备好的几何形状越复杂,操作的加速就越大。 欲了解更多信息,请咨询 GEOS wiki page on prepared geometries 。
例如:
>>> 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
PreparedGeometry
¶file_h (a Python file
object or a string path to the file) -- 包含空间数据的输入文件
一 GEOSGeometry
与文件中的空间数据相对应
示例:
>>> from django.contrib.gis.geos import fromfile
>>> g = fromfile("/home/bob/geom.wkt")
一 GEOSGeometry
与字符串中的空间数据相对应
fromstr(string, srid)
等于 GEOSGeometry(string, srid)
.
示例:
>>> from django.contrib.gis.geos import fromstr
>>> pnt = fromstr("POINT(-90.5 29.5)", srid=4326)
阅读器I/O类返回 GEOSGeometry
来自给予他们的WKB和/或WKT输入的实例 read(geom)
方法。
所有Writer对象都有一个 write(geom)
方法,返回给定几何体的wkb或wkt。此外, WKBWriter
对象还具有可用于更改字节顺序的属性,以及或包含srid值(换句话说,ewkb)。
WKBWriter
提供对其输出的最大控制。默认情况下,当其 write
方法被调用。但是,它的属性允许创建ewkb,这是wkb标准的超集,包含附加信息。见 WKBWriter.outdim
有关 dim
参数。
以Python形式返回给定几何的WKB buffer
对象。示例:
>>> 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>
返回以十六进制表示的几何体的WKB。示例:
>>> from django.contrib.gis.geos import Point, WKBWriter
>>> pnt = Point(1, 1)
>>> wkb_w = WKBWriter()
>>> wkb_w.write_hex(pnt)
'0101000000000000000000F03F000000000000F03F'
此属性可以设置为更改几何图形表示的字节顺序。
序值 |
描述 |
---|---|
0 |
大端(例如,与RISC系统兼容) |
1 |
小endian(例如,与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'
此属性可以设置为更改几何图形表示的输出尺寸。换句话说,如果您有一个三维几何图形,那么设置为3,以便Z值包含在WKB中。
外差值 |
描述 |
---|---|
2 |
默认值,输出2d wkb。 |
3 |
输出三维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是否应包含在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'
此类允许输出几何图形的WKT表示形式。见 WKBWriter.outdim
, trim
和 precision
有关构造函数参数的详细信息的属性。
返回给定几何图形的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)'
见 WKBWriter.outdim
.
此属性用于启用或禁用修剪不必要的小数。
>>> 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)'
此属性控制坐标的舍入精度;如果设置为 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)'
脚注
GEOS_LIBRARY_PATH
¶指定geos c库位置的字符串。通常,仅当geos c库位于非标准位置(例如, /home/bob/lib/libgeos_c.so
)
备注
设置必须是 full 路径到 C 共享库;换句话说,您要使用 libgeos_c.so
不是 libgeos.so
.
7月 22, 2024