我想使用几何类型的数据更新表列中的数据。我有一个GIS Web服务,它返回带有X和Y值的JSON响应。我已经从JSON中检索了这些值以及其他字符串和Int数据类型列所需的其他值。应用程序中的Java代码运行正常,但是我的问题是如何使用“几何”数据类型“更新”数据。
在数据库中,存在一些样本数据,其格式为“ 0x346C0000010CFFC7C50034B01B41BC2D52FF8F660941”。我不知道如何使用preparestatement以这种格式设置X&Y数据。任何见解或建议都会有所帮助。
在进行如下研究之后,我知道如何查询和转换此数据,但不知道我的程序要做什么。
SELECT Shape.STX as x ,Shape.STY as y from Test
WHERE ID=14082
更新
"Insert INTO Test(column1, Column2, Column3, Column4, geom)
VALUES (?, ?, ?, ?,ST_GeomFromText(?, 2100));"
pst.setString(5,"POINT("+lat+" "+log+")" );
我现在找到了该解决方案,但是我不知道上面的查询中“ 2100”是什么意思。也许是错误的,我现在没有设置,但是如果我发现更新查询有任何解决方案,它将更新这篇文章。同时,如果有任何解决方案,请随时更新。
最佳答案
这是您如何插入和检索空间数据的方法。 HTH。
在SQL Server中插入和检索空间数据:
空间数据主要使用2种数据类型:
几何-适用于平面上的2d。
地理-用于全球/圆形表面上的3d。
所有空间数据都存储在x-y坐标中。为了处理空间数据,DML语句使用以字符串形式(在“引号内”)写入的空间功能,因为它们的格式为WKT(众所周知的文本),例如“ POINT(5 3)”(注意:WKT是一种文本标记语言,用于表示矢量几何对象)。以下是一些常用功能:(有关详细说明,请参见MSDN):
数据插入:
可以在INSERT语句中使用以下函数。例如INSERT INTO Tbl1 (mySpatialColumn) Values ('LineString(-1 -2, 6 7))
•'Point(int x int y)':0维对象或仅一个点。
•'LineString(x1 y1,x2 y2,x .. y ..)'
•'CircularString(x1 y1,x2 y2,x .. y ..)'
•'CompoundCurve(x1 y1,x2 y2,x .. y ..)'
•'多边形(x1 y1,x2 y2,x .. y ..)'
•'CurvePolygon(x1 y1,x2 y2,x .. y ..)'
•'MultiPoint':多个点的集合,例如:'MultiPoint((2 3),(7 8 9.5))'
•'MultiLineString(((x1 y1,x .. y ..),(x1 y1,x .. y ..)))':多行,例如:'MultiLineString((1 1,3 5),(-5 3 ,-8 -2))'
•'MultiPolygon((x1 y1,x .. y ..),(x1 y1,x .. y ..))':多个多边形的集合。
资料撷取:
SELECT语句中可以使用以下函数。例如。:
SELECT mySpatialCol.ToSting(), mySpatialCol.AsGml() FROM Tbl1;
•.ToString():以与最初插入的格式相同的格式显示结果,即具有参数值(而不是十六进制值)的源函数,例如:colName.ToString()将显示:LineString(0 0,7 8)。
•.AsGml():转换并以GML / XML格式返回值(而不是返回十六进制或源函数),例如对于LineString()值-colName.AsGml()将返回:
<LineString xmlns="www.example.com/gml"><posList>0 0 7 8</posList></LineString>
注意:在SSMS(Management Studio)中,您可以将检索到的结果作为数据本身(十六进制值)查看,也可以查看空间结果(即形状/图表)(请参见下面的示例):