地理数据导入

Posted

技术标签:

【中文标题】地理数据导入【英文标题】:Geography Data Import 【发布时间】:2016-09-16 13:53:17 【问题描述】:

我正在尝试使用 bcp(批量复制工具)将 CSV 文件中的 SQL Server,但我无法确定格式。我想在 CSV 文件中使用类似的内容,但在 POINT 列上出现错误:

101932694,POINT(44.0586891174316 -69.2067337036133 4326),2014-07-30,24452353

如何格式化 CSV 文件中的地理数据以便 bcp 接受它?

【问题讨论】:

【参考方案1】:

好的,它找不到任何关于使用bcp导入人类可读地理数据的信息,所以我转换了点数据:

点(44.058689117431641 -69.206733703613281 4326),...

转为二进制形式:

E6100000010D000000203B4D51C000000020830746400000000000E6B040,...

并将二进制形式放入我的 CSV 文件中。 bcp 似乎可以正常工作。

【讨论】:

【参考方案2】:

我对 BCP 一无所知,但希望这能满足您的需求。

尝试将您的数据作为字符串导入到临时表中,然后通过更新将其导入到真实表中。

在 SQL Server 内部,空间数据像 varbinary 一样存储,即您的点将存储为

0xE6100000010C010000203B4D51C0FAFFFF1F83074640

如果您尝试使用 SSIS 移动数据,它实际上会将其视为 varbinary,而不是空间。因此,需要进行转换才能将您的字符串转换为正确的格式。

SELECT GEOGRAPHY::STGeomFromText('POINT(44.0586891174316 -69.2067337036133)', 4326)
or
SELECT GEOGRAPHY::Point(-69.2067337036133,44.0586891174316,4326)

出于这些原因,我猜 BCP 不会隐式识别转换,您可能需要手动进行。

CSV => 临时表 =>

INSERT INTO RealTable (GeogColumn) SELECT GEOGRAPHY::STGeomFromText(GeogString,4326) FROM TempTable

【讨论】:

好的。我找到了对二进制格式的引用。我想我会尝试将我的文本数据“point(x y)”转换为二进制格式并将其放入 CSV 文件中。如果这不起作用,我会尝试 hcaelxxam 的建议。

以上是关于地理数据导入的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript Node.js:将基于地理的Flickr数据导入CouchDB

使用ArcGIS连接瀚高数据库与地理信息的导入

使用ArcGIS连接瀚高数据库与地理信息的导入

arcgispro导入坐标重叠

cad如何导入arcgis,详细步骤

怎么将外部获取的经纬度添加到tableau中