【问题标题】:Convert Shapefile to SQL将 Shapefile 转换为 SQL
【发布时间】:2011-09-08 16:32:21
【问题描述】:

我正在尝试将我必须的 shapefile 转换为 SQL 格式。

我尝试过使用shp2pgsql 执行此操作,但是,唉,这个程序不读取SHAPEFILE.prj 文件,所以我最终得到的坐标格式不方便。

有没有办法将 shapefile 转换为符合 PRJ 规范的 SQL?

【问题讨论】:

  • 您能举个例子来说明记录的样子吗?也是\d the_table name的输出?
  • 我个人会将形状文件读入 R 并将它们导出到 sql 表中。

标签: sql gis


【解决方案1】:

您可能希望在一个投影中以更熟悉的值(例如经度和纬度)显示或与之交互的事物。例如,Planet OpenStreetMap 使用球形墨卡托,并在您请求文本时为您提供如下值:

cal_osm=# select st_astext(way) from planet_osm_point limit 3;
                 st_astext                 
-------------------------------------------
 POINT(-13852634.6464924 4928686.75004766)
 POINT(-13850470.0501262 4930555.55031171)
 POINT(-13850160.8268447 4930880.61375574)
(3 rows)

您可以使用st_transform 返回更熟悉的格式,如下所示:

cal_osm=# select st_astext(st_transform(way, 4326)) from planet_osm_point limit 3;
                 st_astext                 
-------------------------------------------
 POINT(-124.440334282677 40.4304093953086)
 POINT(-124.42088938268 40.4431868953078)
 POINT(-124.418111582681 40.4454091953076)
(3 rows)

【讨论】:

    【解决方案2】:

    prj 文件本质上是一个文本文件,其中包含 ESRI Well-known-text(WKT) 格式的坐标系信息。你能写一个程序,使用 shp2pgsql 转换几何图形,然后从 prj 存储相关的 WKT 字符串吗?

    注意:WKT 格式是 EPSG 可接受的格式,用于分隔投影和地理坐标系信息,但不同的机构可能对投影或投影参数有不同的名称。 PostGIS 可能与 Oracle 不同,而 Oracle 又可能与 ESRI 不同。因此,如果您存储 prj 的 WKT,请确保它位于 esri_coordinate_system 列中。 PostGIS 可能有不同的参数命名约定格式。

    另外,如果您有兴趣,还有一个 C++ 开放式 FileGDB api,允许您在没有许可的情况下访问行信息。它在 windows 和 linux 上提供 32 位和 64 位版本:

    http://resources.arcgis.com/content/geodatabases/10.0/file-gdb-api

    【讨论】:

      猜你喜欢
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      • 2020-09-06
      • 2011-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多