我正在考虑在不使用SQL2008的情况下在.NET中实现空间查询。第一个要求是能够创建(BTree样式)空间索引并能够查询它。
尽管SQL 2008附带了用于类型的.NET库,但您需要将SQL用于空间索引。
是否有人使用任何.NET库来处理空间数据(操作系统或商业用途)?我正在看NetTopologySuite,但它看起来很安静,我不想要一个死库。
答案 0 :(得分:8)
SharpMap是一个(众所周知的)OpenSource .NET空间库集合
http://www.codeplex.com/SharpMap
ESRI的商业图书馆将被广泛使用。 我可以问你为什么不想用SQL来创建空间索引吗?
http://msdn.microsoft.com/en-us/library/bb964712.aspx
如果您不想在数据库中创建索引,那么您将无法使用shapefile:
http://mapserver.org/utilities/shptree.html
<强>更新强>
我没有使用过NTS或JTS,但是在http://trac.osgeo.org/geos/还有一个JTS的C ++实现,它有一个活跃的用户社区,我用过几个项目。
Shapely http://gispython.org/shapely/manual.html以Python中的GEOS为基础。如果你在“云”中做所有事情,那么可能值得阅读这篇文章 - http://sgillies.net/blog/986/manipulimization-of-whatchamacallems/
重新索引 - 我发现SQL Server +空间索引的性能优于具有相同数据的shapefile +索引。如果您需要索引来显示数据,那么tile缓存的性能将远远优于任何索引。
Python似乎已成为GIS中的关键语言之一。还有一个R型索引库 - http://pypi.python.org/pypi/Rtree/
答案 1 :(得分:4)
NTS很好......
现在或以后可能有用的其他内容: -
GDAL / OGR用于访问不同的栅格/矢量格式 PROJ4用于处理投影和变换 (在1次安装中查看上面的FWTOOLS下载)
你也应该查看Mapwindow ...如果还没出来,那么在.NET中重写的版本应该很快就会出来......在悉尼的FOSS4G看到它。
当然PostGRES与PostGIS是一个非常强大的空间数据库,您可以从.NET访问
另请查看具有矢量数据空间扩展的SQLLite,现在是RasterLite !!
Geoserver或Mapserver,如果您想要通过网络启用任何内容。
要结帐的其他常规GIS应用程序: GRASS和SAGA
答案 2 :(得分:2)
QuadTree的简单版 http://www.codeproject.com/KB/recipes/QuadTree.aspx
答案 3 :(得分:-1)
我建议DotSpatial
其MIT许可