如何将谷歌地球(google earth) 的数据导入 PostgreSQL

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

标签

PostgreSQL , google earth , kml , ogc


背景

KML(Keyhole Markup Language) 是一种文件格式,用于在地球浏览器(例如 Google 地球、Google 地图和 Google 地图移动版)中显示地理数据。KML 使用包含嵌套的元素和属性的结构(基于标记),并符合 XML 标准。

由于KML已经加入OGC标准,所以作为OGC的成员之一的PostGIS也是会支持KML格式的,通过st_geomfromkml可以将KML中的geometry分段导入到PG数据库中。

geometry ST_GeomFromKML(text geomkml);      

例子

SELECT ST_GeomFromKML('      
		<LineString>      
			<coordinates>-71.1663,42.2614      
				-71.1667,42.2616</coordinates>      
		</LineString>');      

除此之外,还可以使用ogr2ogr 将kml(kmz,依赖libkml)文件转换为esri格式,再通过shp2pgsql导入到PostgreSQL.

参考:

http://www.bigfastblog.com/landsliding-into-postgis-with-kml-files

[转]使用Geoserver和Google Earth打造三维GIS展示系统

原文

http://blog.csdn.net/iwillsw/article/details/4733300

给图层添加高度数据,需要根据实体几何类型分别处理。对于面,例如行政区界或建筑物,需要创建一个高度模板文件。

对于线(点),例如架空电缆,高程将直接从图形数据中读取。

GeoServer 1.7.1及以上版本支持输出三维面的KML(KMZ),1.7.6及以上版本支持输出三维线(点)的KML(KMZ)。

发布三维面图层:

用Geoserver发布三维面的过程非常简单,测试中我们使用Geoserver自带的示例图层topp:states。

1、用记事本新建一个文本文件(高度模板文件),命名为height.ftl 。

2、在文件中加入一行脚本,格式为${ATTRIBUTE.value},ATTRIBUTE是属性字段的名称。

例如states图层有属性字段 PERSONS,记录每个州的人口, 输入 ${PERSONS.value?number/100},把高度和人口数建立关系。

3、将 height.ftl 复制到Geoserver的/data/featureTypes/states/目录下 。

4、进入Geoserver地图预览页面,找到topp:states,选择KML,打开Google Earth浏览效果。

效果图1

pic

官方原文见:http://geoserver.org/display/GEOSDOC/04-Height+Templates

作为练习,可以根据官方文档

http://demo.opengeo.org:8080/display/GEOSDOC/05-Super+Overlays+and+Extrudes+with+Building+Data,

发布纽约曼哈顿的建筑物,浏览三维城市效果。

效果图2

pic

发布三维线图层:

三维线不使用height.ftl文件,因为一条线有两个以上的节点,每个节点可能有不同的高度值, 高程直接存放在图形数据(Geometry)的Z坐标中。

Oracle Spatial、PostgreSQL(PostGIS)等数据库都支持存储三维坐标。

Geoserver可以直接发布三维线,测试中使用Oracle Spatial(10g)和PostgreSQL(8.3)作为数据源。

1、在Oracle Spatial(10g)或PostgreSQL(8.3)中存入包含Z坐标的三维线数据,作为测试,可用直接SQL语句插入数据。

2、在Geoserver中发布该图层。

3、进入Geoserver地图预览页面,找到刚才发布的图层,选择KML,打开Google Earth浏览效果。

需要注意的是,默认KML(KMZ)在Google Earth中的实际效果是三维面。

经过查阅KML文档,要实现三维线,需要在KML链接后加上可选参数format_options=extrude:0,例如将

http://192.98.151.200:8080/geoserver/wms/kml?layers=topp:TESTL

改为

http://192.98.151.200:8080/geoserver/wms/kml?layers=topp:TESTL&format_options=extrude:0

效果图3

pic

Google KML Version 2.2已经获得OGC批准,成为国际标准的数据存储格式。ESRI、INTERGRAPH、MAPINFO在其最新版本软件中提供KML格式输出支持。

Google定义的KML不仅可以包含三维高程数据,还能加入四维时间数据。

本文只涉及三维数据的发布和展示,相关技术文档请参考Google KML和Geoserver KML页面。

Google KML页面:http://code.google.com/apis/kml/documentation/

Geoserver KML页面:http://geoserver.org/display/GEOSDOC/KML+KMZ+Outputhttp://geoserver.org/display/GEOSDOC/Google+Earth+Features

本文涉及的软件环境为:Geoserver 1.7.7、Geoserver 2.0、Google Earth 5.1、Oracle 10.2.0.3、PostgreSQL

参考

http://www.opengeospatial.org/standards/kml

https://developers.google.com/kml/documentation/kml_tut

http://postgis.net/docs/ST_GeomFromKML.html

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
2月前
|
数据可视化 定位技术 Sentinel
如何用Google Earth Engine快速、大量下载遥感影像数据?
【2月更文挑战第9天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,批量下载指定时间范围、空间范围的遥感影像数据(包括Landsat、Sentinel等)的方法~
395 0
如何用Google Earth Engine快速、大量下载遥感影像数据?
|
2月前
|
编解码 人工智能 算法
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
21 0
|
2月前
|
编解码 人工智能 数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
41 0
|
2月前
|
编解码
Open Google Earth Engine(OEEL)——matrixUnit(...)中产生常量影像
Open Google Earth Engine(OEEL)——matrixUnit(...)中产生常量影像
21 0
|
2月前
Google Earth Engine(GEE)——导出指定区域的河流和流域范围
Google Earth Engine(GEE)——导出指定区域的河流和流域范围
38 0
|
2月前
|
传感器 编解码 数据处理
Open Google Earth Engine(OEEL)——哨兵1号数据的黑边去除功能附链接和代码
Open Google Earth Engine(OEEL)——哨兵1号数据的黑边去除功能附链接和代码
22 0
|
2月前
Google Earth Engine(GEE)——当加载图表的时候出现错误No features contain non-null values of “system:time_start“.
Google Earth Engine(GEE)——当加载图表的时候出现错误No features contain non-null values of “system:time_start“.
38 0
|
2月前
|
编解码 定位技术
Google Earth Engine(GEE)——导出后的影像像素不同于原始Landsat影像的分辨率(投影差异)
Google Earth Engine(GEE)——导出后的影像像素不同于原始Landsat影像的分辨率(投影差异)
19 0
|
2月前
|
机器学习/深度学习 算法 数据可视化
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
93 0
|
2月前
|
数据处理
Google Earth Engine(GEE)——sentinel-1数据处理过程中出现错误Dictionary does not contain key: bucketMeans
Google Earth Engine(GEE)——sentinel-1数据处理过程中出现错误Dictionary does not contain key: bucketMeans
29 0

相关产品

  • 云原生数据库 PolarDB