generated from xinetzone/xbook
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
15 changed files
with
2,901 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# PyGIS | ||
|
||
[PyGIS](https://pygis.io/)(开源空间编程与遥感)利用诸如 geopanda、Rasterio、Sklearn 和 Geowombat 等开源 Python 包来更好地理解我们的世界,并帮助预测它的未来。 | ||
|
||
```{toctree} | ||
start/index | ||
vector-ops/index | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# PyGIS 快速上手 | ||
|
||
```{toctree} | ||
spatial-data | ||
storage-formats | ||
spatial-vector-data | ||
spatial-raster-data | ||
test | ||
``` |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,171 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"# 光栅数据\n", | ||
"\n", | ||
"栅格数据模型使用单元格数组或像素来表示真实世界的对象。光栅数据集通常用于表示和管理图像、表面温度、数字高程模型和许多其他实体。栅格可以被认为是区域对象的一种特殊情况,其中区域被划分为规则的单元格网格。但是,有规律间隔的标记点数组可能是更好的类比,因为栅格存储为值数组,其中每个单元格在大多数 GIS 环境中由单个坐标对定义。在栅格数据模型中隐含着一个与每个单元格或像素相关的值。这与向量模型相反,向量模型可能具有或不具有与几何原语相关的值。\n", | ||
"\n", | ||
"为了处理光栅数据,将使用 `rasterio` 和稍后的 `geowombat`。幕后是 `numpy.ndarray` 做了所有繁重的工作。为了理解栅格是如何工作的,它有助于从零开始构建栅格。\n", | ||
"\n", | ||
"这里创建了两个 ndarray 对象,一个 X 跨越经度(longitude) $[-90°,90°]$,另一个 Y 跨越纬度(latitude) $[-90°,90°]$。" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 1, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"text/plain": [ | ||
"array([[-90., -54., -18., 18., 54., 90.],\n", | ||
" [-90., -54., -18., 18., 54., 90.],\n", | ||
" [-90., -54., -18., 18., 54., 90.],\n", | ||
" [-90., -54., -18., 18., 54., 90.],\n", | ||
" [-90., -54., -18., 18., 54., 90.],\n", | ||
" [-90., -54., -18., 18., 54., 90.]])" | ||
] | ||
}, | ||
"execution_count": 1, | ||
"metadata": {}, | ||
"output_type": "execute_result" | ||
} | ||
], | ||
"source": [ | ||
"import numpy as np\n", | ||
"x = np.linspace(-90, 90, 6)\n", | ||
"y = np.linspace(-90, 90, 6)\n", | ||
"X, Y = np.meshgrid(x, y)\n", | ||
"X" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"生成一些表示温度的数据并将其存储在数组 `Z` 中:" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 2, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"image/png": "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", | ||
"text/plain": [ | ||
"<Figure size 640x480 with 1 Axes>" | ||
] | ||
}, | ||
"metadata": {}, | ||
"output_type": "display_data" | ||
} | ||
], | ||
"source": [ | ||
"from matplotlib import pyplot as plt\n", | ||
"\n", | ||
"Z1 = np.abs(((X - 10) ** 2 + (Y - 10) ** 2) / 1 ** 2)\n", | ||
"Z2 = np.abs(((X + 10) ** 2 + (Y + 10) ** 2) / 2.5 ** 2)\n", | ||
"Z = (Z1 - Z2)\n", | ||
"\n", | ||
"plt.imshow(Z)\n", | ||
"plt.title(\"Temperature\")\n", | ||
"plt.show()" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"注意,`Z` 不包含关于其位置的数据。它只是数组,存储在 `x` 和 `y` 中的信息与它完全没有关联。这些位置数据通常存储在文件头文件中。为了在地图上“定位”数组,将使用仿射变换。\n", | ||
"\n", | ||
"## 为数组分配空间数据\n", | ||
"\n", | ||
"好的,我们有一个数据数组和每个单元格的一些坐标,但是我们如何从中创建一个空间数据集呢?为了做到这一点,我们需要三个组成部分:\n", | ||
"\n", | ||
"- 数据数组,通常是 xy 坐标\n", | ||
"- 一种坐标参考系统,它定义了我们所使用的坐标空间(例如度或米,本初子午线的位置等)\n", | ||
"- 定义左上角坐标和单元格分辨率(resolution)的变换\n", | ||
"\n", | ||
"一旦有了这些组件,就可以在几行代码中用 python 编写出工作的空间栅格数据集。只需要以 `rasterio` 能够理解的格式提供上面列出的信息。" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 5, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"from rasterio.transform import Affine\n", | ||
"import rasterio as rio\n", | ||
"\n", | ||
"res = (x[-1] - x[0]) / 240.0\n", | ||
"transform = Affine.translation(x[0] - res / 2, y[0] - res / 2) * Affine.scale(res, res)\n", | ||
"\n", | ||
"# open in 'write' mode, unpack profile info to dst\n", | ||
"with rio.open(\n", | ||
" \"./new_raster.tif\",\n", | ||
" \"w\",\n", | ||
" driver=\"GTiff\", # output file type\n", | ||
" height=Z.shape[0], # shape of array\n", | ||
" width=Z.shape[1],\n", | ||
" count=1, # number of bands\n", | ||
" dtype=Z.dtype, # output datatype\n", | ||
" crs=\"+proj=latlong\", # CRS\n", | ||
" transform=transform, # location and resolution of upper left cell\n", | ||
") as dst:\n", | ||
" # check for number of bands\n", | ||
" if dst.count == 1:\n", | ||
" # write single band\n", | ||
" dst.write(Z, 1)\n", | ||
" else:\n", | ||
" # write each band individually\n", | ||
" for band in range(len(Z)):\n", | ||
" # write data, band # (starting from 1)\n", | ||
" dst.write(Z[band], band + 1)" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"```{note}\n", | ||
"光栅数据通常是“多波段”(multiband)的(如红、绿、蓝),所以这里提供了多波段和单波段数据都适用的代码。\n", | ||
"\n", | ||
"如果存储的是多波段数据,则维度应该存储为 `(band, y, x )`。\n", | ||
"```" | ||
] | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": "Python 3.10.4 ('tvmx': conda)", | ||
"language": "python", | ||
"name": "python3" | ||
}, | ||
"language_info": { | ||
"codemirror_mode": { | ||
"name": "ipython", | ||
"version": 3 | ||
}, | ||
"file_extension": ".py", | ||
"mimetype": "text/x-python", | ||
"name": "python", | ||
"nbconvert_exporter": "python", | ||
"pygments_lexer": "ipython3", | ||
"version": "3.10.4" | ||
}, | ||
"orig_nbformat": 4, | ||
"vscode": { | ||
"interpreter": { | ||
"hash": "e579259ee6098e2b9319de590d145b4b096774fe457bdf04260e3ba5c171e887" | ||
} | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 2 | ||
} |
Large diffs are not rendered by default.
Oops, something went wrong.
Oops, something went wrong.