我的目标是通过使用动态输入到Postgis数据库中的数据在谷歌地图上显示各种形状(多边形,点,线串)(我的意思是我们可以实时看到地图中的修改)。 我正在寻找一种方法,使用postgis中已经提供的空间结构(已指定形状是线条或多边形等),而不是解析坐标,然后在谷歌地图中重新输入空间结构。我看到google maps api现在与kml数据格式兼容。然后我读到我必须将postgis数据转换为kml格式。 我在论坛上做了一些关于通过FWTools将postgis数据转换为kml的实际过程的阅读,但没有看到任何可以帮助我的东西。我是kml的新手,但我熟悉postgis和perl以及PHP。是否有关于将postgis数据转换为kml的过程的教程?我在哪里可以开始?谢谢你的帮助
答案 0 :(得分:4)
您可以使用PostGIS直接转换为KML:
SELECT ST_AsKML(geometry) from MyTable;
ST_AsKML是几种输出格式之一,包括WKT,GML,GeoJSON等。
要在Google地球中显示动态数据,常见的模式是使用带有NetworkLink元素的KML。让链接的viewRefreshMode
等于onStop
,Google地球会在附加边界框参数的情况下向PHP提供的网址发出请求(大概是由PHP提供的网址)。使用边界框查询PostGIS数据库中的要素,并将结果返回为kml。如果您有很多很多功能,但只想检索用户正在查看的区域中的那些功能,那就太棒了。
根据应用程序的复杂程度,您可能还需要查看GeoDjango。 (熟悉PostGIS是一个很大的开端!)
答案 1 :(得分:1)
您可以使用文本转换功能从Postgres DB获取空间数据的文本表示,例如
SELECT AsText(MyGemoetry) from MyTable
然后你解析字符串,使用各种API函数创建对象 - 取决于PostGIS几何类型 - 并以DOM的方式将这些对象附加到主要的GE插件对象。
如果您熟悉JavaScript并具备XML的基础知识,那么一个良好的开端是http://code.google.com/apis/earth/documentation/reference/
不要忘记为对象指定唯一ID,以便稍后可以找到它们以进行删除/修改。
也许你可以获得一些灵感here,显示链接的“locator.js”文件并查看函数PaintSubField(Coord)......这是另一种方式,有点粗糙但有效,避免乱用太多单独的父/子对象和结构
您也可以咨询sample applications并使用code playground进行“快速原型制作”
re“realtime”你至少需要一个可以将你的生成/重绘例程链接到的事件。
祝你好运 拾音