我的目标是通过使用动态输入Postgis数据库的数据在google地图上显示各种形状(多边形、点、线串)(我的意思是我们可以实时看到地图中的修改)。我正在寻找一种方法,使用postgis中已经提供的空间结构(已经指定了形状是线串还是多边形等),而不是解析出坐标,然后在google地图中重新输入空间结构。我看到google地图api现在与kml数据格式兼容。然后我读到我必须将postgis数据转换成kml格式。我在论坛上读了一些关于通过FWTools将postgis数据转换为kml的实际过程,但没有看到任何对我有帮助的东西。我刚接触kml,但熟悉postgis、perl和PHP。有没有将postgis数据转换成kml的过程的教程?我可以从哪里开始呢?谢谢你的帮助
发布于 2009-10-23 00:21:11
您可以使用文本转换函数从Postgres DB获取空间数据的文本表示,例如
SELECT AsText(MyGemoetry) from MyTable然后解析字符串,使用各种API函数创建对象-取决于PostGIS几何类型-并以类似于DOM的方式将这些对象附加到主GE插件对象。
如果您熟悉JavaScript并对XML有一定的基础知识,那么http://code.google.com/apis/earth/documentation/reference/是一个很好的开始。
不要忘了为你的对象指定唯一的ID,这样你就可以在以后删除/修改它们。
也许你可以得到一些启发,显示链接的"locator.js“文件,并查看函数PaintSubField( here )……这是另一种方法,有点粗糙但有效,避免了太多单独的父/子对象和结构
您可能还想咨询sample applications并使用code playground进行“快速原型设计”
re“实时”你至少需要一个可以链接你的生成/重绘例程的事件。
祝你好运MikeD
发布于 2009-10-23 02:37:50
您可以使用PostGIS直接转换为KML:
SELECT ST_AsKML(geometry) from MyTable;ST_AsKML是几种输出格式之一,包括WKT、GML、GeoJSON等。
要在Google Earth中显示动态数据,一种常见的模式是使用带有NetworkLink元素的KML。如果链接的viewRefreshMode等于onStop,Google Earth将发出附加了边界框参数的请求(大概是发送到PHP提供的URL )。使用边界框查询PostGIS数据库中的要素,并以kml格式返回结果。如果你有很多很多的特征,但只想检索用户正在查看的区域中的特征,这是很棒的。
根据应用程序的复杂程度,您可能还想看看GeoDjango。(熟悉PostGIS是一个很好的开始!)
https://stackoverflow.com/questions/1598635
复制相似问题