我是sql server spatial的新手。在SQL Server 2014或2012(不是2008年)中应用于地理数据类型时,我遇到了STBuffer函数的问题。
应用STBuffer功能后,生成的形状与原始形状完全不同,而不仅仅是与原始形状相隔一段距离。
见下面的代码:
select (geography::STGeomFromText('POLYGON ((-78.17498995969072 40.511906814179383, -78.174936763010919 40.512004616786726, -78.174837516853586 40.512342629022896, -78.175599932204932 40.512442785082385, -78.176346572581679 40.5125408685999, -78.17645655060187 40.512555316090584, -78.176824942231178 40.512603710405529, -78.177308602025732 40.512666257680394, -78.178199267713353 40.51277746737469, -78.181078517111018 40.51316248846706, -78.181189002934843 40.513158924411982, -78.1812548530288 40.51315680029802, -78.181430931901559 40.513151120278053, -78.181524405721575 40.5131481050048, -78.181649426696822 40.513150648796, -78.181668272824027 40.512921414221637, -78.17498995969072 40.511906814179383))',4326)).
然后我应用了STBuffer(0.01),形状与原始形状完全不同。我不允许发布形状图像,因此您可能需要在sql server中运行以查看结果。
但是,如果我应用其他缓冲距离,如0.001或0.1,形状都看起来不错。只有缓冲距离0.01会产生奇怪/意外的结果。
任何想法和帮助都表示赞赏。
答案 0 :(得分:0)
您对这些点的精确度都是严重的过大。在小原子域中可能有15个小数,我想如果您将每个点四舍五入到一个更合理的水平,这将不是问题。
尝试四舍五入到7或8位小数,然后看看会发生什么。无论如何,它都应该处理缓冲区,因此可能是一个错误。