用于处理丹麦Kvadratnet瓦片方案的Python工具。
项目描述
Kvadratnet是一套工具,可以简化处理丹麦Kvadratnet的过程。
简介
丹麦Kvadratnet是一种基于UTM坐标的地理瓦片方案。瓦片方案是国家标准,用于将全国地理数据集划分为更小的部分。
丹麦Kvadratnet最初是由丹麦统计局和丹麦国家测绘局合作创建的,作为国家静态行政地理子划分。之所以这样做,是因为通常的行政边界,如市界,会随着时间的推移而变化,因此不适合作为地理行政索引。
丹麦Kvadratnet由几个覆盖整个国家的不同大小的正方形瓦片组成的多个网络。支持的瓦片大小有:100m、250m、1km、10km、50km和100km。瓦片通过瓦片大小和瓦片左下角的坐标进行识别。坐标根据瓦片大小进行截断,例如1km_6452_523。以下表格中可以看到瓦片标识符的示例
网络 |
瓦片名称示例 |
---|---|
100km |
100km_62_5 |
50km |
50km_620_55 |
10km |
10km_622_57 |
1km |
1km_6223_576 |
250m |
250m_622375_57550 |
100m |
100m_62237_5756 |
kvadratnet模块的使用不仅限于丹麦的地理区域。镶嵌方案可以应用于地球上的任何地区,因为UTM坐标系统在全球范围内定义。如果使用镶嵌方案跨越多个UTM区域,则需要格外小心,因为坐标在区域内重复。这可以通过将所有数据保持在同一UTM区域内来解决,即使其中一些可能放置在区域外。通过使用鲁棒的UTM坐标转换库,例如proj.4中的扩展横墨卡托实现,即使在跨越多个UTM区域的情况下,也可以保持数据在相同的坐标系中。Grenland Survey、Asiaq(http://www.asiaq.gl/)就是使用这种精确的程序,该机构组织跨越10个UTM区域的数据。
示例
使用kvadratnet的示例
假设你有一系列按1公里网络组织的文件。我们想统计每个父级10公里图块中包含多少个1公里图块。
from collections import Counter
import kvadratnet
files = ['dtm_1km_6121_867.tif', 'dtm_1km_6125_866.tif',
'dtm_1km_6125_862.tif', 'dtm_1km_6423_512.tif',
'dtm_1km_6253_234.tif', 'dtm_1km_6235_634.tif',
'dtm_1km_6424_513.tif', 'dtm_lkm_5223_523.tif',
'dtm_1km_6251_236.tif', 'dtm_1km_6424_517.tif']
counter = Counter()
for filename in files:
try:
name = kvadratnet.tile_name(filename)
except:
counter['bad_name'] += 1
parent = kvadratnet.parent_tile(name, '10km')
counter[parent] += 1
print(counter)
# Counter({'10km_642_51': 4, '10km_612_86': 3, '10km_625_23': 2, '10km_623_63': 1, 'bad_name': 1})
knet - 命令行界面
kvadratnet还有一个名为knet的命令行界面。knet命令是各种工具的前端,这些工具使管理kvadratnet命名文件的生活更加容易。例如,重命名多个文件
# add a prefix before the cell identifier $ knet rename --prefix PUNKTSKY_ "*.laz" # strip anything but the cell identifier $ knet rename PUNKTSKY*.laz
使用knet根据父图块组织子文件夹中的文件很容易
# divide files into 100km and 10km folders $ knet organize "1km*.tif" 100km 10km
安装
安装可以通过以下方式完成
pip install kvadratnet
或通过下载源代码并运行
python setup.py install
测试
nose用于测试。可以通过运行来调用测试套件
nosetests -v
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。