是否有任何开源工具或库(最好是在 python 中)可用于与从 ESRI shapefile 读取的 3D 几何执行大量交集?大多数测试将是简单的线段与多边形。
我研究了 OGR 1.7.1 / GEOS 3.2.0,虽然它正确加载了数据,但结果交叉点不正确,而且大多数其他可用工具似乎都建立在这项工作上。
虽然 CGAL 本来是一个替代方案,但它的许可证并不合适。Boost 通用几何库看起来很棒,但 api 很大,而且似乎不支持 wkt 或 wkb 开箱即用的阅读器。
我正在使用mapdotnet服务为我们的gis应用程序加载shapefile,而这个mapdotnet服务需要proj4细节.我从spatialreference.org获取它们,但是对于这个投影,proj4的细节是空白的.如何从.prj文件或shapefile中获取proj4详细信息?
下面是shapefile的.prj:
PROJCS["NAD_1983_HARN_WISCRS_EauClaire_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",394000.0],PARAMETER["False_Northing",300812.797],PARAMETER["Central_Meridian",-91.28888888888889],PARAMETER["Standard_Parallel_1",45.87228112638889],PARAMETER["Scale_Factor",1.000035079],PARAMETER["Latitude_Of_Origin",45.87228112638889],UNIT["Foot_US",0.3048006096012192]]
Run Code Online (Sandbox Code Playgroud) 我试图在命令窗口中运行以下代码.代码执行,但它没有给我.SHP文件中的值.该表具有GeographyCollections和多边形,存储在Geography类型的Field中.我在sql语句中尝试了许多Geography类型的变体 - Binary,Text等,但没有运气.输出.DBF文件包含数据,因此与数据库的连接有效,但形状.Shp文件和.shx文件没有数据,大小分别为17K和11K.
有什么建议?
ogr2ogr -f "ESRI Shapefile" -overwrite c:\temp -nln Zip_States -sql "SELECT [ID2],[STATEFP10],[ZCTA5CE10],GEOMETRY::STGeomFromWKB([Geography].STAsBinary(),4326).STAsText() AS [Geography] FROM [GeoSpatial].[dbo].[us_State_Illinois_2010]" ODBC:dbo/GeoSpatial@PPDULCL708504
Run Code Online (Sandbox Code Playgroud) 我开始绘图.我想查看一张法国地图,上面有一层可以个性化的图层.
我已经有了shapefile格式的自定义图层.我根本不知道是否必须创建一个OpenStreetMap服务器,或者我是否可以直接使用Web应用程序.
你能给我一个用我的额外图层shapefile格式映射显示的起点吗?
我猜这个任务很复杂,但你必须从......开始......
非常感谢你
我已经有一段时间了,并取得了一些成功,但是当涉及到重写文件时,我没有.
我正在使用的shapefile是一个地形和都市区域的多边形shapefile,但我对大都市区不感兴趣所以我正在使用R中的shp来尝试从我的地图中删除它们.
要下载正确的文件,请确保在"Metropolitan/Micropolitan Statistical Area(2010)"下选择"一个国家/地区中的所有州"
这是我到目前为止所拥有的:
library(maptools)
met=readShapeSpatial("tl_2010_us_cbsa10.shp")
met=met@data
Run Code Online (Sandbox Code Playgroud)
子集之前:
NAMELSAD10 LSAD10
Anchorage, AK Metro Area - M1
Clarksdale, MS Micro Area - M2
Richmond, VA Metro Area - M1
Big Spring, TX Micro Area - M2
Dallas-Fort Worth-Arlington, TX Metro Area - M1
Rio Grande City-Roma, TX Micro Area - M2
Run Code Online (Sandbox Code Playgroud)
然后:
submet=subset(met, LSAD10 == "M1")
Run Code Online (Sandbox Code Playgroud)
子集后:
NAMELSAD10 LSAD10
Anchorage, AK Metro Area - M1
Richmond, VA Metro Area - M1
Dallas-Fort Worth-Arlington, TX Metro Area - M1 …Run Code Online (Sandbox Code Playgroud) ogr2ogr或arcpy可以直接csv进行shapefile转换吗?我正在尝试用一个小脚本自动化一些进程,并希望我可以使用ogr2ogr或arcpy轻松完成,我是新手.
任何输入将不胜感激.
我是postgreSQL和postGIS的新手.
我可以找到多个视频,显示如何通过pgAdmin 3将形状文件导入到postgis.但不再支持pgAdmin 3.
如何使用pgAdmin 4执行此操作?
我正在尝试将geojson文件转换为shapefile。我正在尝试这种方式(我是Python的新手,所以可能不正确)。
import urllib, geojson, gdal
url= ' http://ig3is.grid.unep.ch/istsos/wa/istsos/services/ghg/procedures/operations/geojson?epsg=4326'
response = urllib.urlopen(url)
data = geojson.loads(response.read())
file = open ('data.geojson', 'w')
pickle.dump(data,file)
file.close()
ogr2ogr -f "ESRI Shapefile" destination_data.shp "data.geojson"
Run Code Online (Sandbox Code Playgroud)
因此,我从URL获取数据,将其放入文件中,当我尝试将其转换为shapefile时,出现此错误:
File "<stdin>", line 1
ogr2ogr -f "ESRI Shapefile" destination_data.shp "data.geojson"
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
因为我还很新,所以尝试了在网上找到的解决方案。有什么办法可以使这项工作吗?
干杯,
G
这感觉就像应该已经具备容易做的功能,但我找不到一个.
我最终要做的是:我有一个包含3个功能的shapefile,显示了边界框; 我想使用其中一个功能在另一个shapefile或多边形中选择其中的所有功能.我使用ogr2ogr运行,使用-clipsrc和-clipsrcwhere标志从我的边界框shapefile中选择我的边界框.这很好用,但我不能包含或排除沿边界落下的多边形,我不希望它们被剪裁.所以,我想我会使用-spat标志而只是导入边界框多边形范围.
我知道我可以通过以下方式获得多边形的范围:
polygon = 'mouth'
inDriver = ogr.GetDriverByName("ESRI Shapefile")
inDataSource = inDriver.Open(extent_shpfile, 1)
inLayer = inDataSource.GetLayer()
select = "name = '" + polygon + "'"
inLayer.SetAttributeFilter(select)
for feature in inLayer: #inLayer is always of size one because polygon is a unique value
geom=feature.GetGeometryRef()
Run Code Online (Sandbox Code Playgroud)
从这里我可以解析geom的值以获得min和max x和y值.是否没有一个ogr调用来执行此操作(如inLayer.GetFeatureExtent()或inLayer.GetExtent(feature_fid)?后者只返回图层范围,前者不存在,但必须从要素几何中解析它感觉笨重.
我有一个shapefile,我想知道每个多边形有什么其他多边形触摸它.为此,我有这个代码:
require("rgdal")
require("rgeos")
download.file("https://www.dropbox.com/s/vbxx9dic34qwz63/Polygons.zip?dl=1", "Polygons.zip")
Shapefile <- readOGR(".","Polygons")
Touching_List <- gTouches(Shapefile, byid = TRUE, returnDense=FALSE)
Touching_DF <- setNames(stack(lapply(Touching_List, as.character)), c("TOUCHING", "ORIGIN"))
Run Code Online (Sandbox Code Playgroud)
我现在想进一步了解每个多边形触及其他多边形的程度.对于每一行,我所追求的Touching_DF是每个ORIGIN多边形的总长度/周长以及每个TOUCHING多边形接触原点多边形的总长度.然后,这将允许计算共享边界的百分比.我可以想象这将是3个新列的输出Touching_DF(例如,对于第一行,它可能是原点参数1000m,触摸长度500m,共享边界50%).谢谢.
编辑1
我已将@ StatnMap的答案应用于我的真实数据集.gTouches如果多边形共享边和点,则看起来返回结果.这些点导致问题,因为它们没有长度.我已经修改了StatnMap的代码部分来处理它,但是当在最后创建数据框时,gTouches返回的共享边/顶点的数量与有多少边有长度之间存在不匹配.
下面是一些使用我的实际数据集示例来演示问题的代码:
library(rgdal)
library(rgeos)
library(sp)
library(raster)
download.file("https://www.dropbox.com/s/hsnrdfthut6klqn/Sample.zip?dl=1", "Sample.zip")
unzip("Sample.zip")
Shapefile <- readOGR(".","Sample")
Touching_List <- gTouches(Shapefile, byid = TRUE, returnDense=FALSE)
# ---- Calculate perimeters of all polygons ----
perimeters <- sp::SpatialLinesLengths(as(Shapefile, "SpatialLines"))
# ---- All in a lapply loop ----
all.length.list <- lapply(1:length(Touching_List), function(from) {
lines <- …Run Code Online (Sandbox Code Playgroud)