将shapefile数据集中到数据库中


13

我已经从各种不同的GIS项目中获得了数百个shapefile,我希望开始将它们合并到一个数据库平台中,目前正在使用Postgres / PostGIS进行尝试。

几乎没有任何数据是标准化的-这意味着它是许多相同的数据类型,但是特定的属性名称/类型不匹配。

我应该从哪里开始解决这个问题?我是否应该开发一个标准模型将每个shapefile迁移到第一个模型(例如Hydro_line,transport_line,Hydro_poly标准等)?

一种替代方法是仅将每个shapefile分别导入Postgres,因此每个shp都将成为数据库中的表,但是就性能和组织而言,我不确定。感觉有点像延迟不可避免的事情...

对处理这个艰巨的任务有什么建议吗?

Answers:


7

看看Spatial ETL软件(提取-转换-加载),它们专用于此类任务。最著名的是Safe的FME,但现在有一些开源(部分)替代产品,例如SDI(空间数据集成商)和GeoKettle


2
我要求在上一个问题中进行比较,因此,如果您走这条路线,请写下来。 gis.stackexchange.com/questions/5049/spatial-etl-comparisons
RyanKDalton

我获取了FME的试用版,并安装了SDI和GeoKettle。我将尝试它们,看看是否可以理解它们。FME看起来像汤到胡说的解决方案,但我必须首先克服学习上的困难:)。
colemanm 2011年

1
@ colemanm-您最终在此上做了什么?您觉得哪个产品最有用?
RyanKDalton 2011年

6

哈罗

我首先将其导入PostGIS。有一些工具可以将多个形状加载到单个表中。QGIS吐口水扩展是其中之一。PostGIS干线或实验二进制文件中的新图形shp2pgsql是另一种选择。或者,您可以只使用shp2pgsql编写批处理脚本。

我将从此处开始,将所有内容导入到称为原始或类似名称的架构中。然后,我将构建数据。在合适的表中合并在一起,依此类推。

这样做的好处是,如果您保存用于进行这些转换的所有查询,则将获得有关数据历史记录的出色文档。如果需要,重做它也很容易。一旦准备好组织工作,就可以将“原始”模式的备份转储到某个地方。

我认为这是一种结构化且干净的方法。如前所述,您将获得非常扎实的文档,内容涉及哪个字段将名称更改为什么新名称,以及哪些原始表已合并到该大的新表中,依此类推。

在这样的FME和软件中,您当然也可以保存所做的事情,但是与内部数据库查询相比,它非常慢,而且不是将sql查询作为完成操作的通用文档。只要有文本文件和关系数据库,它们就将可用且可读。

我经常以文本文件结尾,如下所示:

-- A query to merge all roads in Norway

Create table road_tables.all_roads as
SELECT id as roadid, status, the_geom from original.big_roads
union all
SELECT rid as roadid, condition as status, the_geom from original.small_roads;

等等。几年后,此另存为文本文件具有很大的价值。

问候尼克拉斯


1
+1我认为这是一个非常好的方法。一切都在Postgres内完成,非常透明并且可以根据需要轻松复制。
昏暗

1
对于基于ESRI的GIS来说不是一个好的建议。开源“仅”这是可以接受的。ESRI具有更多依赖关系,这些依赖关系无法通过此方法访问。如果没有互操作程序,gis服务器或arcsde,则不允许直接连接到postgis。
Brad Nesom,2011年

2
@Brad Hmm,我想知道这是以透明,可复制和快速的方式做事的论点,还是反对将sde
插入

1
@Brad:colemanm没有提到ESRI,因此答案似乎不错。
Underdark

我使用ESRI Sde要素类和SQL Server 2008(带有本机几何)完成了类似的工作-我先创建了要素类,然后加载了一系列插入语句。IIRC,由于无法正确生成新的objectid,因此必须在最后将要素类导出到新的要素类。一旦我做到了,照常营业。
杰·康明斯

4

我的建议是选择2-5个较重的使用数据层(shapefile)并将其迁移到rdbms。
调查并实施这些数据的工作流。习惯于rdbms与基于文件的数据的局限性和要求。

限制包括:必需的导出,着陆区,coordsys,协作文件类型。

您提出的建议有很多好处。
旁注:(我爷爷告诉我的父母花600万美元在买房之前先找房子)考虑到您正在为数据寻找房子(长期),从现在开始您不希望为30年买单不喜欢

我的建议是写下(数字或模拟)数据源的树状列表,然后以大图查看它们,这应该使您可以将数据组织得更简洁。

arcgis中有一些方法(我的假设:您尚未指定首选系统)来集成异构数据。

如果您有兴趣学习良好的设计规范,则可以尝试一些此类信息。

地理数据库设计概述
地理数据库文档
也有一些类似的圆弧10。
资源中心
Arc10地理数据库

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.