我需要GIS数据中的Lat / LON
我有来自的数据文件 http://www.mngeo.state.mn.us/chouse/land_own_property.html
以格式给出 .dbf,.prj,.sbn,.sbx,.shp和.shx
在.dbf我看到了
PIN, Shape_area, Shape_len
PARC_CODE Parcel Polygon to Parcel Point numeric 2
and PIN Relationship Code
和.prj
PROJCS["NAD_1983_UTM_Zone_15N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-93.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
我也知道每个县的多边形点
polygons points
Anoka 129139 129138
Carver 38134 38133
Dakota 135925 150294
Hennepin 422976 446623
Ramsey 149169 168233
Scott 55191 55191
Washington 98915 103915
我知道边界坐标
-94.012
-92.732
45.415
44.471
似乎有大量的GIS软件应用程序 http://en.wikipedia.org/wiki/List_of_geographic_information_systems_software
但是我需要做什么?
我想要每个房子的lat,lon
是否有图书馆会为我这样做? 我需要什么数据?
答案 0 :(得分:1)
上面的文件扩展名显示,文件采用ESRI Shape File格式。在Java中,您可以使用GeoTools库来阅读它。
下面的示例显示了第一行,搜索Internet以获得更完整的示例。
// init shapefile
File shpFile = new File(fileName);
if (!shpFile.exists()) {
LOGGER.fatal(fileName + " does not exist");
}
Map<String, URL> connect = new HashMap<String, URL>();
FeatureCollection collection = null;
FeatureIterator iterator = null;
try {
connect.put("url", shpFile.toURI().toURL());
DataStore dataStore = DataStoreFinder.getDataStore(connect);
String typeName = dataStore.getTypeNames()[0];
答案 1 :(得分:1)
我认为您需要安装一个GIS软件。您可以尝试使用开源Qgis。
因为,首先您的数据不在长/纬(地理)坐标中。 shapefile的.prj部分(是的,同名的.dbf,.prj,.sbn,.sbx,.shp和.shx文件是GIS的一个shapefile)表示数据在投影坐标系中NAD 1983 UTM Zone 15N。因此,您需要将transform数据发送到地理系统。您可以轻松地在GIS中执行此操作,也可以通过proj.4库以编程方式执行此操作。 (在Qgis中将shapefile添加到项目中,然后在目录中选择它,鼠标右键并选择“另存为...”。它将询问您的目标坐标系。)注意,您需要决定您希望的地理坐标,因为您的数据位于北美基准面(NAD 1983),但现在全球最常见的是WGS 1984.
其次,在GIS中,您将看到您的数据,它们是真正的点还是多边形。 (如果你的房子是多边形,你需要在Qgis菜单Vector - Geometry Tools - Polygon Centroids中获得它们的质心。)
最后,当你真的将房屋作为地理坐标中的点时,你可以得到它们的坐标,例如使用这些问题Get list of coordinates for points in a layer和How do I calculate the latitude and longitude of points using QGIS中的建议。
此外,有一个很好的库可以处理GIS矢量数据OGR,它可以被许多编程语言使用。
答案 2 :(得分:1)
&#34;我想要每个房子的纬度,而且#34;建议您要做的是名为geocoding的过程。你可以使用一些服务,有些是免费的(有限用途)。您可以先查看List of geocoding systems,了解从哪里开始。我不认为您想从学习GIS或shapefile开始,而不是提取您尝试地理编码的地址。
您可以通过计算每个地块的质心来估算每个房屋的纬度/经度。您可以通过计算每个宗地的边界矩形的质心来更粗略地估计每个房屋的纬度/经度。其中任何一个都需要提取宗地坐标。如果你为明尼苏达州的每个房子做这件事,你将处理大量数据。地理编码服务会更便宜。 Census Geocoder可能会有所帮助。