用于地理空间应用程序的 2D 光栅化器,用 Rust 编写
项目描述
geo-rasterize:用于地理空间应用的 2D 光栅化器,用 Rust 编写
geo-rasterize
是一个用于rust 库的 Python 包装器,它具有相同的名称,可以栅格化
匀称的
矢量形状,就像
rasterio的
features.rasterize一样。不同之处在于,虽然rasterio
是在 GDAL 上构建的,但这个库没有依赖关系——您可以安装它而不必担心 GDAL(或任何其他 C 库)!Plusgeo-rasterize
的光栅化算法是基于 GDAL 的,所以它应该是一个替代品rasterio.features.rasterize
,它提供了一个非常相似的 API。
我们为以下平台发布了轮子到 PyPI Python 3.7+:
操作系统 | 建筑学 |
---|---|
Linux | x86-64 |
Linux | i686 |
Linux | aarch64 |
视窗 | x86-64 |
视窗 | i686 |
苹果系统 | Universal2(x86-64 和 aarch64) |
例子
例如,让我们将Point
位于的单个栅格化(x=1, y=2)
到一个 5 像素宽和 6 像素高的栅格上。默认情况下,光栅像素将从零开始,我们将1
在点接触的每个像素中放置一个:
>>> from shapely.geometry import Point
>>> from geo_rasterize import rasterize
>>> print(rasterize([Point(1, 2)], [1], (5, 6)))
[[0 0 0 0 0]
[0 0 0 0 0]
[0 1 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]]
结果正是我们所期望的:一个 5x6numpy
数组,其中一个像素设置为 1!请注意,我们必须指定一个形状列表,而不仅仅是一个形状。并且前景值列表([1]
在这种情况下)必须具有相同的长度,因为我们需要为每个形状提供一个前景值。
所以让我们看看多种形状!
>>> from shapely.geometry import Point, LineString
>>> from geo_rasterize import rasterize
>>> shapes = [Point(3, 4), LineString([(0, 3), (3, 0)])]
>>> foregrounds = [3, 7]
>>> raster_size = (4, 5)
>>> print(rasterize(shapes, foregrounds, raster_size))
[[0 0 7 0]
[0 7 7 0]
[7 7 0 0]
[7 0 0 0]
[0 0 0 3]]
当两个形状在同一个像素中燃烧时会发生什么?这取决于您如何设置由algorithm
参数给出的合并算法。默认值'replace'
意味着最后一个形状会覆盖像素,但您也可以将其设置'add'
为前景值将相加。这使您可以制作热图!
>>> from shapely.geometry import Point, LineString
>>> from geo_rasterize import rasterize
>>> shapes = [LineString([(0, 0), (5, 5)]), LineString([(5, 0), (0, 5)])]
>>> print(rasterize(shapes, [1, 1], (5, 5), algorithm='add'))
[[1 0 0 0 1]
[0 1 0 1 1]
[0 0 2 1 0]
[0 1 1 1 0]
[1 1 0 0 1]]
我们的两条线在您会发现的中心交叉2
。
您可以使用参数更改默认值background
。dtype
您可以使用参数设置数组dtype
。设置
dtype='uint8'
将使光栅阵列所需的空间减少 8 倍。如果您只对二进制光栅化感兴趣,这将特别有用。
地理变换
到目前为止,我们所有的例子都假设我们的形状坐标在图像空间中。换句话说,我们假设x
坐标将在范围内0..width
,并且y
坐标将在范围内0..height
。唉,通常情况并非如此!
对于卫星图像(或一般的遥感图像),图像几乎总是在其元数据中指定坐标参考系统 ( CRS ) 和仿射变换。 有关详细信息,请参阅rasterio 的地理配准。
为了处理大多数图像,您必须将矢量形状从其原始 CRS(通常EPSG:4326
用于地理经度和纬度)转换为您的数据文件指定的任何 CRS(通常是
UTM
投影,但有很多选择)。然后,您需要应用仿射变换将世界坐标转换为像素坐标。由于光栅图像通常指定逆变换矩阵(即变换),因此在将其应用于坐标之前pix_to_geo
,您首先需要对其进行反转以获得变换。geo_to_pix
现在您已经获得了适合您的图像数据的像素坐标!
geo-raterize
可以通过处理仿射变换来缓解这个繁琐的过程。geo_to_pix
只需使用参数传递一个仿射变换数组
(.to_gdal()
如果有
affine.Affine
实例则调用)。
总而言之,您必须:
- 从您的图像中提取 CRS 并将您的形状转换为该 CRS(可能使用pyproj 及其与 [geo types][geo] 的集成,
pix_to_geo
从图像元数据中提取转换- 从该数据创建一个
Affine
实例(GDAL 将这些表示为一个[f64; 6]
数组,您可以使用Affine.from_gdal
) - 调用
transform.inverse
以获取相应的geo_to_pix
变换(请记住,并非所有变换都是可逆的!) - 调用
transform.to_gdal()
并使用带有geo_to_pix
参数的结果数组
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置发行版
geo_rasterize -0.9.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4a23c0c2e69646c2e65a831dd356e4291b409534bfbc4b19af3854fa0dd76f51 |
|
MD5 | 23fb2d8efc43011a7523a90babbfdd8b |
|
布莱克2-256 | f4614ebfbfd7e02ef67097ce656501e4dd9426dffa291633bfafaad305dba984 |
geo_rasterize -0.9.0-cp37-abi3-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b687cf7e1701a2b126204531d6644ab7e125484f574029a1145347600dc3ec4a |
|
MD5 | e839fb59b4c72feb49840ddd81cd8648 |
|
布莱克2-256 | 037aff423f3c4f10718b9947761b7d83ba7fdb9358bbb7dd50c305378522ed4d |
geo_rasterize -0.9.0-cp37-abi3-win32.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f79f250828324a48f535a3ec66f1e1107d763ad96e39fb053e70362d6d92458a |
|
MD5 | 81926376c9e6ef3e390b8a0c43f87981 |
|
布莱克2-256 | 64f1180964fe681d075a465e3504f6e17477f46257f750d39d57c64351f701b1 |
geo_rasterize -0.9.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3d83000d9266f80107ea6f579850c5213efc563f8553af90941170387bb65dc6 |
|
MD5 | 5d6629a3ae64cb07a23834e60731c2ef |
|
布莱克2-256 | 0edd16ec792ae5eff70c7d47b86f770fb2f1d374a1e4cd10d6f4079c391608b5 |
geo_rasterize -0.9.0-cp37-abi3-manylinux_2_17_i686.manylinux2014_i686.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0b2580b339df7518a7e445482947e00614e850c2cb5e5cebba35bc3beb43256e |
|
MD5 | d91e6b762a4e7573e2cf8b90d24c28e7 |
|
布莱克2-256 | 05b2900bafe858249537d35b418cb7297464de026a825b28360e4a4b09a592b9 |
geo_rasterize -0.9.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 06e563c5ac7aa19ef11d97c66333b0c9fa0831e9d6d8865ad47373796fd47216 |
|
MD5 | efd907197cb99ed678a45ccc8aad4923 |
|
布莱克2-256 | 7f4d9ffed048b992e5aa64a7f56f519e28e739a0975161cb68cce7be037de7ea |
geo_rasterize -0.9.0-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 289a53452820b28a5493c957beb5c40208993420734ea2ec88a3a3feee434513 |
|
MD5 | 7223bd4e9c21247291684ef7fef42567 |
|
布莱克2-256 | e466e997033c9a581a67cb815aef66443414c55998948718b3491598a54cc9ce |