地理信息系统

制图师,地理学家和GIS专业人员的问答

1
在OpenLayers2中应用自定义Google地图样式?
最近,我偶然发现了这篇有趣的文章,展示了向Google Maps 添加自定义样式的潜力。在这里可以看到一些样式化地图的示例,您可以在此处从头开始设计自己的样式。 我想将“灰度”主题应用于我的OpenLayers基本地图: 根据Google 演示的样式说明如下所示: var styles = { 'Greyscale': [ { featureType: 'all', rules: [ {saturation: -100}, {gamma: 0.50} ] } ] } 目前,我在OpenLayers中的Google地图看起来就像: var gmap = new OpenLayers.Layer.Google("Google Streets", { 'numZoomLevels': 20, 'sphericalMercator': true} ); 如何将灰度主题应用于地图?

4
从一组弧线计算覆盖率+重叠的算法
我有一个shapefile,其中包含表示卡车将肥料传播到农场的路径的弧线。 假设我知道传播宽度为30m,即卡车可以在车辆的任何一侧传播15m的肥料。 我想生成一组多边形,这些多边形显示: 1)接收肥料的总面积 2)重叠的面积,即两个单独的通道过于靠近的位置,以致农场的某些部分收到了正确的“剂量”的两倍肥料。 天真的方法是仅将coverage多边形创建为圆弧周围的缓冲区。这在散布线彼此不同的特殊情况下有效。但是,可以想象,卡车可能会以不断下降的螺旋线在农场周围行驶,并且简单的缓冲区无法显示出重叠,因为螺旋线的两个通道过于靠近(如果螺旋线是一个弧,我最终会得出结论)没有重叠部分的单个多边形)。 如果相关的话,我正在使用TatukGIS VCL DK,但我实际上是在寻找一种算法而不是特定的解决方案。 到目前为止对讨论的一些澄清: 1)我不能依靠具有任何特定元数据(例如GPS日志或传播速率)的矢量数据。我允许用户选择一个图层并指定展开宽度,然后运行报表。 2)该报告的目的实际上是向用户显示车辆操作员的“技能”水平,其中“技能”表示“以最小的重叠实现了最高的覆盖率”。 3)我在矢量土地上比在光栅土地上更舒适,因此将更喜欢基于矢量的解决方案。 谢谢, 达伦




2
使用ogr和Python在Polygon中指向(线串)
我目前正在一个项目中,我需要根据在shapefile中找到的几何特征来构建拓扑网络。到目前为止,使用Ben Reilly的开源项目,我已经设法将线串转换为networkx边缘,并检测到封闭特征(将其他线串说成)并将其添加到最近的点,以便我可以运行最短路径算法。 但这对于一个shapefile很好。但是,我现在需要将来自不同shapefile的要素连接到一个大的networkx图形中。因此,例如,如果某个点在多边形内,则将其连接(通过连接,我的意思是添加一个networkx边-add_edge(g.GetPoint(1),g.GetPoint(2)),并在下一个shapefile中将该点也位于共享相似属性(例如ID)的多边形内,请注意,不同shps中的多边形仅共享相同的ID,而不共享坐标,而位于多边形内的点也不共享相同的坐标。 我对这个问题的解决方案是识别位于多边形中的点,将其存储,在下一个shapefile中找到具有相同ID的多边形中的点,然后在它们之间添加networkx边。 如何查找点是否位于多边形内?嗯,有一个众所周知的算法:RayCasting算法可以做到这一点。不过,这实际上是我遇到的问题,因为要实现算法,我需要多边形的坐标,而且即使浏览了OGR的Geometry 文档也不知道如何立即访问它们。因此,我要问的问题是如何访问多边形点或坐标,或者是否有更简单的方法来检测点是否落在多边形内?在osgeo.ogr库中使用python,我编写了以下代码: if g.GetGeometryType() == 3: #polygon c = g.GetDimension() x = g.GetPointCount() y = g.GetY() z = g.GetZ() 查看图片以更好地了解我的问题。 [编辑] 到目前为止,我已经尝试将所有多边形对象存储在列表中,然后再与之比较线串的第一和最后一点。但是Paolo的示例与使用“点对象”引用和“多边形对象”引用有关,这与线对象引用不兼容,因为不是整个线都在多边形内,而是其线串的第一个或最后一个点。 [EDIT3] 从线串的第一个点和最后一个点的坐标创建一个新的Geometry点对象,然后使用该对象与列表中保存的多边形几何对象进行比较似乎很好: for findex in xrange(lyr.GetFeatureCount()): f = lyr.GetFeature(findex) flddata = getfieldinfo(lyr,f,fields) g = f.geometry() if g.GetGeometryType() == 2: for j in xrange(g.GetPointCount()): if …

3
如何溶解重叠的多边形?
我有一个关于在ArcGIS 9.3中溶解面要素的查询。我只有准系统许可证和非常基础的VB知识。 我有一个大约有4500个多边形的大shapefile,我想知道是否有办法解决那些重叠的多边形?我基本上想将这一层变成一个包含单独区域的shapefile,因此,一个多边形本身将保留,但是多个多边形重叠时它们将分解为1,每个单独的区域都有其自己的属性集。shapefile的更改非常频繁,到目前为止,我已经遍历了所有这些文件,并使用编辑器工具手动解决了重叠区域的问题,但是我敢肯定,这样做的方法要快得多! 关于如何实现的任何见解? 我已经使用了溶解工具并加入了导出的属性表,这很完美!我认为溶解工具仅适用于属性,而不适用于空间位置,因此了解该功能非常有用。而且ModelBuilder代码是

2
确定从不同飞行高度向下到地平线的角度
我是一名飞行员,而不是GIS专家。我需要一个公式或一个网站,我可以提供变量以回答我的问题。 我需要知道从不同的飞行高度到地平线的角度。这是针对特定的海洋飞行,因此地形不是一个因素。 知道角度的角度就.1足够了。知道从25,000英尺到41,000英尺的每两千英尺的角度将满足我的需求。


5
使用来自另一个dbf表的值更新一个shapefile属性表
我试图在这里解释我要做什么: 我有一个shapefile和一个具有相同字段的独立dbf表。在dbf表中填充了所有字段,但在shapefile属性表中仅填充了一个字段,将其命名为“ OneField”。我想做的是检查“ OneField”(Shapefile)中的值是否与“ OneField”(dbf表)中的值相同,如果是,则用这些填充在shapefile属性表中的其余空字段在独立的dbf表中。 目前,我只想将独立dbf表中的值复制到shapefile属性表中,但是我被卡住了。你能帮我一下吗? 这是代码: import arcpy table = "link/to/table.dbf" fc = "link/to/shapefile.shp" # Create a search cursor rowsTable = arcpy.SearchCursor(table) # Create an update cursor rowsFc = arcpy.UpdateCursor(fc) for row in rowsTable: row = row.getValue("OneField") valueTable = row for row in rowsFc: row = row.setValue("OneField", valueTable) rowsFc.updateRow(row) …
10 python  data  shapefile 



1
如何在ArcGIS Desktop中提供自动概览图?
我知道这是一个措词不当的问题,但我不确定该如何称呼。最近,我的主管向我展示了他制作的打印出的地图,该地图的一侧是高分辨率的卫星图像,另一侧则是整个英国的概览图,并带有一个点,标出了卫星图像的位置。 他说,这是使用ArcGI自动生成的,他不必手动使用正确的坐标向总览图添加点。 不幸的是,他一直无法找到时间来帮助我,我一直在寻找方法,但是由于我不知道该过程的名称,因此很难找到它。 有谁知道这个过程/技术称为什么,我应该如何去做? 我正在使用ArcGIS 10。

2
纬度/经度之间的距离
我正在尝试计算两个纬度/经度点之间的距离。我有一段代码大部分都是我从这篇文章中摘录的,但是我不太了解它是如何工作的。 这是代码: <?php // POINT 1 $thisLat = deg2rad(44.638); $thisLong = deg2rad(-63.587); // POINT 2 $otherLat = deg2rad(44.644); $otherLong = deg2rad(-63.911); $MeanRadius = 6378 - 21 * sin($lat1); $xa = (Cos($thisLat)) * (Cos($thisLong)); $ya = (Cos($thisLat)) * (Sin($thisLong)); $za = (Sin($thisLat)); $xb = (Cos($otherLat)) * (Cos($otherLong)); $yb = (Cos($otherLat)) * …

4
您如何管理现有的GIS数据并允许与资产管理系统集成?
我正在使用基于ESRI的GIS软件,Postgresql / PostGIS / ArcSDE DB,我们有一个Mincom Ellipse资产管理系统。 目前,我们关于资产站点的所有空间信息都已记录为点,这对于它可以适应各种比例尺的制图来说是非常有用的。现在,我们将资产管理系统与GIS数据库集成在一起,资产管理人员希望GIS功能能够反映结构,例如将建筑物占地面积作为多边形而不是点。 我的问题是关于空间数据管理的。我应该维护两组数据吗?一种用于资产表示,然后一种用于各种映射任务? 谢谢DB

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.