首页 > 解决方案 > 如何将 geoJSON 坐标输入到 SQL Server 数据库?

问题描述

我有一个包含 LINESTRING 类型坐标的 geoJSON 文件(非洲的电网)。

我想解析它并作为一种Geography类型插入到 SQL Server 数据库中(稍后在 Tableau 中可视化)。

使用下面的代码,我可以从 JSON 文件中导入所有值,除了保持为 NULL 的坐标。我应该怎么做才能在坐标列中包含地理类型数据?

DROP TABLE IF EXISTS dbo.testGeographyJSON
GO

CREATE TABLE testGeographyJSON 
(
    id INT IDENTITY(1,1),
    Country NVARCHAR(300),
    Operator NVARCHAR(300),
    Status NVARCHAR(300),
    voltage_kV FLOAT(12),
    length_km FLOAT(12),
    Coordinates GEOGRAPHY
)

DECLARE @JSON NVARCHAR(MAX)
DECLARE @g GEOGRAPHY;

-- load the geojson into the variable
SELECT @JSON = BulkColumn
FROM OPENROWSET (BULK 'C:\Users\User\Downloads\africagrid20170906final.geojson', SINGLE_CLOB) as JSON


INSERT INTO dbo.testGeographyJSON (Country, Operator, Status, voltage_kV, length_km, Coordinates)
    SELECT
        Country, Operator, Status,
        voltage_kV, length_km,
        @g.STBuffer(1).ToString()
    FROM
        OPENJSON(@JSON, '$.features')
    WITH 
        (Country NVARCHAR(300) '$.properties.country',
         Operator NVARCHAR(300) '$.properties.voltage_kV',
         Status NVARCHAR(300) '$.properties.status',
         voltage_kV FLOAT(12) '$.properties.voltage_kV',
         length_km FLOAT(12) '$.properties.length_km'
        )

标签: sql-servergeojson

解决方案


推荐阅读