25次发布

0.0.25 2023年1月11日
0.0.24 2022年12月23日
0.0.22 2022年2月17日
0.0.20 2021年11月22日
0.0.4 2018年7月17日

#96 in 地理空间

Download history 3/week @ 2024-03-10 161/week @ 2024-03-31 1/week @ 2024-04-07

56 每月下载量

MIT 许可证

195KB
4.5K SLoC

geoq

Build Status crates.io

Geoq 是一个用于处理地理空间数据的命令行工具。

它将常见的 GIS 序列化格式与用于在地图上操作和可视化数据的实用程序结合起来。

例如

# Print the geometry and the set of level 2 geohashes which covers the given geometry
$ echo '{"type":"Polygon","coordinates":[[[-34,38],[-37,32],[-23,33],[-34,38]]]}' | geoq gh covering 2 -o
{"type":"Polygon","coordinates":[[[30,10],[40,40],[20,40],[10,20],[30,10]]]}
eq
en
em
ej

# Feed that output into a map on geojson.io
$ echo '{"type":"Polygon","coordinates":[[[-34,38],[-37,32],[-23,33],[-34,38]]]}' | geoq gh covering 2 -o | geoq map

请参阅 手册 获取更多示例和可用命令。

安装

Geoq 通过 cargo(Rust 包管理器)安装,并需要 nightly rust。

如果您已设置好所有这些,只需运行 cargo install geoq 即可。

安装 Rust 和 Cargo 工具链

curl https://sh.rustup.rs -sSf | sh
rustup toolchain install nightly
rustup default nightly
cargo install geoq

您还需要将 Cargo 的 bin 目录添加到您的路径

# e.g. in your ~/.bash_profile or other shell profile
export PATH="$HOME/.cargo/bin:$PATH"

更新现有安装

要从 crates.io 拉取并安装新版本,请运行

cargo install geoq --force

支持输入格式

Geoq 将自动检测以下 GIS 输入格式

  • 逗号分隔的经纬度:34.0,-118.0
  • Geohashes(32进制):9q5
  • WKT:POINT (-118.0, 34.0)
  • GeoJSON: {"type": "Point", "coordinates": [-118.0, 34.0]}
  • 十六进制格式的H3单元: 8c274996e1683ff

每行一个要素,每行一个要素

Geoq按行处理文本输入,并期望输入不要跨越多行。

这有时会导致问题,尤其是在处理GeoJSON时,因为许多JSON处理工具都喜欢以多行格式输出格式化的JSON。

解决格式化GeoJSON问题的方法之一是使用jq工具

echo '{
    "type": "Point",
    "coordinates": [30, 10]
}
' | jq -c . | geoq map

命令

使用geoq --helpgeoq <subcommand> --help查看有关这些命令的详细信息

  • bbox - 为几何体或几何体流提供边界框
  • centroid - 获取几何体的质心
  • filter - 空间谓词过滤
    • intersects - 选择与给定查询几何体相交的要素
    • contains - 选择被给定查询几何体包含的要素
  • gh - 地理哈希子命令
    • children - 获取地理哈希的子项
    • covering - 输出“覆盖”几何体的地理哈希
    • neighbors - 获取地理哈希的邻居
    • point - 输出给定经纬度的32进制地理哈希
  • gj - GeoJSON子命令
    • f - 将几何体输出为GeoJSON要素
    • geom - 将几何体输出为GeoJSON几何体
    • fc - 将所有输入几何体收集到GeoJSON要素集中
  • json - JSON -> GeoJSON强制转换
    • munge - 尝试将任意JSON转换为GeoJSON要素。
  • map - 使用geojson.io进行可视化
  • measure - 测量子命令
    • distance - 测量要素之间的距离
    • coord-count - 给出几何体中的顶点数
  • read - 调试/格式验证
  • shp - 将shapefile转换为GeoJSON
  • simplify - 简化几何体,可以是固定阈值或迭代到目标顶点数
  • whereami - 输出基于IP地理位置的当前经纬度作为GeoJSON
  • wkt - 将几何体输出为WKT
  • fgb - 使用flatgeobuf
    • write - 将GeoJSON行写入STDIN生成flatgeobuf文件
    • read - 读取flatgeobuf文件到GeoJSON,可选的边界框过滤器
  • h3 - 使用H3空间网格系统
    • children- 获取h3单元格的子项
    • covering - 为几何体生成一组H3单元格。
    • from-str - 将h3十六进制字符串ID转换为64位数字ID
    • grid-disk - 获取给定半径范围内的磁盘
    • hierarchy - 对于给定点输出所有 h3 单元,从 res 0 到 15
    • parent - 获取单元的父单元(或祖先单元)
    • point - 获取点的 H3 单元
    • resolution - 获取 H3 单元的分辨率
    • to-str - 将 64 位数值 h3 索引转换为十六进制字符串表示形式

请参阅 手册 获取更多示例和可用命令。

开发

运行测试

cargo test

构建 / 发布

cargo publish
git tag release/<VERSION>
git push origin release/<VERSION>

依赖项

~29–42MB
~733K SLoC