首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP将MySQL空间转换为geoJson

使用PHP将MySQL空间转换为geoJson
EN

Stack Overflow用户
提问于 2012-06-03 05:01:33
回答 1查看 3.2K关注 0票数 2

我有一个形状文件,我想通过使用传单(http://leaflet.cloudmade.com/)在网上显示它。由于传单只支持geoJSON,所以我应该将shp文件更改为geoJSON。这是很容易的,因为我可以使用“保存为”的能力,在量子地理信息系统。

虽然我可以使用geojson作为数据库(通过编程方式读取、编辑和写入文件),但我认为最好使用“真正的”数据库。MySQL是最流行的,它支持空间数据,所以我决定使用MySQL。

设想如下:

  1. 将shp改为MySQL (我使用ogr2ogr,只需运行以下命令: ogr2ogr -f "MySQL“MySQL:"geo,user=root,host=localhost,password=toor”-lco engine=MYISAM airports.shp)
  2. 将MySQL数据库导入geojson <--这是问题
  3. 使用ajax获取geojson并更改布局<--这应该很容易,我很熟悉JQuery

我的MySQL表中有一列,其类型为“几何学”,请参阅下面的表定义:

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `airports` (
  `OGR_FID` int(11) NOT NULL AUTO_INCREMENT,
  `SHAPE` geometry NOT NULL,
  `cat` decimal(10,0) DEFAULT NULL,
  `na3` varchar(80) DEFAULT NULL,
  `elev` double(32,3) DEFAULT NULL,
  `f_code` varchar(80) DEFAULT NULL,
  `iko` varchar(80) DEFAULT NULL,
  `name` varchar(80) DEFAULT NULL,
  `use` varchar(80) DEFAULT NULL,
  UNIQUE KEY `OGR_FID` (`OGR_FID`),
  SPATIAL KEY `SHAPE` (`SHAPE`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=77 ;

有没有办法将这样的表格转换成geojson格式?(我更喜欢简单的方法,但如果没有,只需将列更改为数组就可以接受)

编辑:我使用由phayes编写的geophp。https://github.com/phayes/geoPHP/wiki/Example-format-converter。这解决了主要问题。只需要有点混乱添加功能等。有什么更简单的解决方案吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-15 03:40:00

虽然可能没有将mysql空间实体转换为geojson的直接方法,但您可以尝试以下方法:

  • 获取实体的WKT (著名文本)。(MySQL参考)
  • 从WKT转换到geojson (用perl完成,虽然您应该能够在其他语言中找到它,或者用javascript编写自己的语言);

注意,正如其他人所建议的那样,只在实体上调用jsonEncode()就不会对geoJson产生影响。

我个人的建议,不直接回答你的问题,是存储数据的格式,你需要它的检索。它将减少每次需要数据时处理数据所需的开销。

要做到这一点,最简单的方法是按照您的建议以纯文本存储geojson。如果出于任何原因,您还需要以本机格式存储几何图形,则可以将其存储在另一列中。唯一的缺点是保持两列保持同步。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10868025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档