我的数据库中有一个表,其中列的类型为“geometry”。 我想获取此列中包含的数据(多边形和圆形)并将它们转换为易于解析并以HTML格式呈现的内容(最好是作为SVG),但我似乎无法做到。
我已经能够从数据库中提取GML和WKT,但是这些似乎都没有让我更接近我的目标而没有额外的前端解析容易出错。是否有任何内置插件或第三方库能够执行此操作?我可以忽略一个简单的转换吗?我不知道为什么不能这样做,因为我认为这将是其他人需要的有用工具。
答案 0 :(得分:1)
从GeoJson
和GEOMETRY
SQL类型转换为GEOGRAPHY
相对容易。
从那里可以更轻松地转换为SVG
。
修改强>
NPM package for GeoJson to SVG converter
GitHub repo for another GeoJson to SVG converter
SQL: Returning Spatial Data in GeoJson Format (part 1)
SQL: Returning Spatial Data in GeoJson Format (part 1)
第二个教程中的相关SQL函数:
CREATE FUNCTION dbo.geometry2json ( @geo GEOMETRY )
RETURNS NVARCHAR(MAX)
AS
BEGIN
RETURN (
'{' +
(CASE @geo.STGeometryType()
WHEN 'POINT' THEN
'"type": "Point","coordinates":' +
REPLACE(REPLACE(REPLACE(REPLACE(@geo.ToString(),'POINT ',''),'(','['),')',']'),' ',',')
WHEN 'POLYGON' THEN
'"type": "Polygon","coordinates":' +
'[' + REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@geo.ToString(),'POLYGON ',''),'(','['),')',']'),'], ',']],['),', ','],['),' ',',') + ']'
WHEN 'MULTIPOLYGON' THEN
'"type": "MultiPolygon","coordinates":' +
'[' + REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@geo.ToString(),'MULTIPOLYGON ',''),'(','['),')',']'),'], ',']],['),', ','],['),' ',',') + ']'
WHEN 'MULTIPOINT' THEN
'"type": "MultiPoint","coordinates":' +
'[' + REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@geo.ToString(),'MULTIPOINT ',''),'(','['),')',']'),'], ',']],['),', ','],['),' ',',') + ']'
WHEN 'LINESTRING' THEN
'"type": "LineString","coordinates":' +
'[' + REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@geo.ToString(),'LINESTRING ',''),'(','['),')',']'),'], ',']],['),', ','],['),' ',',') + ']'
ELSE NULL
END)
+'}');
END;