GIS - alx696/share GitHub Wiki

QGIS

$ sudo sh -c 'echo "deb https://qgis.org/ubuntu bionic main" >> /etc/apt/sources.list'
$ sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1C7028C3 && \
  sudo apt update && \
  sudo apt install -y qgis

瓦片服务

https://github.com/alx696/share/blob/master/%E7%93%A6%E7%89%87%E6%9C%8D%E5%8A%A1.md

OpenStreetMap

地址 https://tile.openstreetmap.org/{z}/{x}/{y}.png

地理查询API

https://nominatim.org/release-docs/develop/api/Overview/

数据导出

http://download.geofabrik.de/asia/china.html 下载 china-latest.osm.pbf.

数据转换

osm2pgsql

https://github.com/openstreetmap/osm2pgsql

安装

$ git clone --depth=1 git://github.com/openstreetmap/osm2pgsql.git

$ sudo apt-get install -y make cmake g++ libboost-dev libboost-system-dev \
  libboost-filesystem-dev libexpat1-dev zlib1g-dev \
  libbz2-dev libpq-dev libproj-dev lua5.3 liblua5.3-dev

$ mkdir build && cd build ;\
  cmake ..

$ make -j32 ;\
  sudo make install

$ osm2pgsql --version

$ docker run -d --restart=always \
-v ${PWD}/osmdb:/data \
-p 50000:5432 \
-e PGDATA=/data -e TZ=Asia/Shanghai -e POSTGRES_PASSWORD=postgres \
--name "osmdb" postgis/postgis:12-3.0

$ docker run -it --rm -e PGPASSWORD="postgres" \
  postgis/postgis:12-3.0 \
  psql --host=172.17.0.1 --port=50000 --dbname=postgres --username=postgres \
  -c "CREATE EXTENSION hstore;"

导入

$ osm2pgsql -c -E 4326 -H 127.0.0.1 -P 50000 -U postgres -W -d postgres --slim -C 8000 china-latest.osm.pbf

经过测试,数据质量不高,可查内容有限,数据库查询速度也不行.


GeoServer

允许跨域cors

修改war包中的WEB-INF/web.xml文件,增加如下内容:

<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
  <init-param>
    <param-name>cors.allowed.origins</param-name>
    <param-value>*</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

PostGIS

Geometry常用函数

way 是geometry.

  • 空间转换(way为3857) st_transform(way, 4326)
  • 类型 st_geometrytype(way)
  • Well Known Text st_astext(way)
  • GeoJSON st_asgeojson(way)
  • x st_x(way) , y st_y(way)
⚠️ **GitHub.com Fallback** ⚠️