(当然,形状文件不仅是一个文件。 它是一个目录,其中包含8个文件,文件扩展名包括.dbf,.prj,.qix,.sbn,.sbx,.shp,.xml和.shx。)
我没有ArcGIS许可证。 我在http://resources.arcgis.com/content/geodatabases/10.0/file-gdb-api找到了File Geodatabase API,但我不确定它是否是正确的工具集,而且我也很难找到示例代码。
有人可以向我展示一些代码,以查找大量点(来自外部数据源,如csv文件)中的每个点所在的多边形(来自形状文件)吗?
此外,我需要指定我需要能够为每个事件向csv记录添加相关多边形的特定代码。 因此,仅仅将点绘制在地图上以可视化哪些多边形包含事件是不够的。 我根本不需要可视化这些数据。 相反,我需要能够为csv文件中的每个事件记录标记一个多边形ID,以便我可以进行非可视化性质的后续数值分析。
也感谢有关此主题的文章,教程和其他资源的链接。 我想象人们每天都解决这个问题,因此如果人知道如何寻找它,就必须有一个已建立的代码库。 我每天都用Java编码,因此首选Java解决方案。 但是,如果您有用其他语言编写的好的代码示例,则我可以将其移植到其他语言中。
编辑:
我尝试了以下基于Spacedman建议的R代码,并收到以下错误消息:
> myCSV <- read.csv(file="myCSVFile.csv",head=TRUE,sep=",")
> pts = SpatialPoints(myCSV)
> ZipCodes = readShapeSpatial("path/myshapefile.shp")
> overlay(myCSV,ZipCodes)
Error in function (classes, fdef, mtable) : unable to find an inherited method for function "overlay", for signature "data.frame", "SpatialPolygonsDataFrame"
>
请参见下面的其他评论。
第二次编辑:
我最终使用的 R 代码是:
myCSV <- read.csv(file="myData.csv",head=TRUE,sep=",")
pts = SpatialPoints(myCSV)
ZipCodes = readShapeSpatial("myPath/ZipCodes.shp")
write.csv(ZipCodes$ZIPCODE[overlay(pts,ZipCodes)], "ZipMatches.csv", quote=FALSE, row.names=FALSE)
注意:我必须使用:
summary(ZipCodes)
找到包含邮政编码的编码字段名称。在运行summary(ZipCodes)之前,脚本只输出每个邮政编码的索引而不是邮政编码本身。