地理信息系统

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

4
在Ubuntu上修复损坏的GDAL和PROJ.4吗?
我解决了库问题,但仍然存在,仅与未加载的PROJ.4库有关。我问了这些问题的后续问题。 我的GDAL软件包和PROJ.4库已损坏,这在尝试重新投影文件时会导致错误(请参见下面的旧问题)。我不知道在我错误地安装了另一个GDAL实例之前还是之前,这个问题是否开始;但是,我已经将其卸载并重新安装了QGIS,问题仍然存在。 每次重新安装后,QGIS都具有与以前相同的插件,因此导致错误的部分在安装/卸载过程中保持不变。 我尝试了什么: sudo apt-get remove build-essential python-all-dev并sudo apt-get remove gdal-bin清除手动安装的GDAL 通过Ubuntu软件中心安装(un)安装QGIS sudo apt-get --purge autoremove dpkg -l | grep '^rc' | awk '{print $2}' | sudo xargs dpkg --purge并dpkg --list | grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge清除配置文件 仍然没有运气。我发现了一些似乎相关的东西,但这是针对Windows的,而不是针对我的Ubuntu 14.04的。在下一次安装QGIS之前,还应该清除什么(以及如何清除)? 原始问题: …

1
如何访问已删除的功能属性(提交之前)
我为图层上的功能删除事件设置了信号: self.layer.featureDeleted.connect(self.feature_deleted) 当我尝试从插槽上已删除的功能中获取属性时,会引发StopIteration错误(即,它无法检索该功能)。 我以为在提交对图层的更改之前,我仍然应该能够从已删除的要素中检索属性?否则,我看不到fid参数的用途。 def feature_deleted(self, fid): feature = self.layer.getFeatures(QgsFeatureRequest().setFilterFid(int(fid))).next() idx = self.layer.fieldNameIndex('my_attribute') print feature.attributes()[idx] 我如何访问已删除要素的属性(在提交对图层的更改之前)?


5
太平洋的适当地图投影
我从http://www.transpacificproject.com找到了这张显示太平洋的地图: 我想为地球的同一区域制作一张相似的地图,并且我想使用相同的投影,因为我认为它很好地说明了各大洲之间的距离。 我已经搜索了此投影的名称,但我还不知道答案。起初我以为是罗宾逊,但据维基百科说: 罗宾逊投影是一次显示整个世界的世界地图的地图投影。 似乎并非如此。(在这里看不到欧洲和非洲。) 因此,我的问题有两个:投影的名称是什么?我应该使用它来说明我之前所说的话还是应该使用其他内容?

2
POSTGIS获取多边形的最大长度和平均宽度
我在postgis中有一个多边形类型表。 我需要自动计算多边形的最大长度: 第二个是平均宽度: 我现在怀疑是否可行,因为尽管在其他情况下我所有的多边形将几乎都是矩形的,但它确实可能是模棱两可的,并且几乎不可能区分宽度和高度。 让我们看看是否有人可以对此进行阐述。 问候,

1
Hstore键/值和空间查询的组合太慢,无法处理更大的OSM提取
我正在尝试使用PostgreSQL 9.3.5和PostGIS 2.1.4计算OSM数据的一些统计信息。我从从Geofabrik下载的巴伐利亚提取物开始。db模式是正常的API 0.6模式,数据是通过转储方法导入到Postgres中的(使用渗透性附带的pgsnapshot_schema_0.6 * .sql脚本)。还进行了真空分析。 我使用的唯一定制产品是一个多边形表,该表包含用于所有管理边界关系的多面体。多边形的几何形状没有任何简化。 我现在想要实现的是计算巴伐利亚的admin = 6边界内的所有节点。这是我的SQL查询: SELECT relpoly.id, count(node) FROM bavaria.relpolygons relpoly, bavaria.nodes node WHERE relpoly.tags @> '"boundary"=>"administrative","admin_level"=>"6"'::hstore AND ST_Intersects(relpoly.geom, node.geom) GROUP BY relpoly.id; 该查询的运行时非常糟糕,因为Postgres正在执行嵌套循环联接,并在所有节点上扫描每个admin = 6边界。仅供参考,巴伐利亚被分成98个admin = 6个多边形,巴伐利亚提取物中大约有3000万个节点。 是否有可能避免这种次优查询的执行,并告诉Postgres它只扫描一次所有节点(例如,通过增加结果集中对应多边形的计数器或使用提示)? 编辑: 1)巴伐利亚节点上存在空间索引: CREATE INDEX idx_nodes_geom ON bavaria.nodes USING gist (geom); 2)查询计划如下: HashAggregate (cost=284908.49..284908.75 rows=26 width=103) -> …

3
对面要素进行分组以匹配一组规格
我有两组不同的面要素(398个人口普查区和80个邮政编码),每个要素都汇总成一个较大的要素(美国县)。尽管人口普查区小于邮政编码,但它们不会汇总(即嵌套在其中)邮政编码。 我的问题-是否有使用ArcGIS或QGIS(或任何软件)的方法/工具分别将398个人口普查区和80个邮政编码分组以形成10个面要素,同时最大程度地减少了两组10个面要素之间的差异? 为了明确起见,我想将398个区域分组-> 10个特征,然后分别对80个邮政编码-> 10个特征进行分组,这样我就有两个不同的集合,每个集合10个特征。我想优化此分组,以便使这两个集合之间的重叠最大化(即,最小化不匹配)。

3
了解RTree使用空间索引的情况?
我在理解RTree的空间索引使用方面遇到麻烦。 示例:我有300个缓冲点,我需要用多边形shapefile知道每个缓冲区的相交区域。多边形shapefile具有> 20,000个多边形。建议我使用空间索引来加快此过程。 所以...如果我为多边形shapefile创建空间索引,它会以某种方式“附加”到文件,还是会独立存在?也就是说,创建完之后,我可以在多边形文件上运行交集函数并获得更快的结果吗?交叉点会“看到”有空间索引并且知道该怎么做吗?还是我需要在索引上运行它,然后通过FID或类似的方法将那些结果关联回我的原始多边形文件? RTree文档对我没有太大帮助(可能是因为我只是在学习编程)。它们显示了如何通过读取手动创建的点,然后针对其他手动创建的点查询索引来创建索引,这些其他点返回包含在窗口中的ID。说得通。但是,他们没有解释这与索引将来自的原始文件之间的关系。 我认为它必须是这样的: 从我的多边形shapefile中为每个多边形要素拉出bbox,并将其放置在空间索引中,为其提供一个与shapefile中的id相同的ID。 查询该索引以获取相交的ID。 然后,仅对通过查询索引确定的原始shapefile中的要素重新运行交集(不知道我将如何做最后一部分)。 我有正确的主意吗?我有什么想念的吗? 现在,我正在尝试使此代码在仅包含一个点要素的一个点shapefile和一个包含> 20,000个面要素的多边形shapefile上工作。 我正在使用Fiona导入shapefile,使用RTree添加空间索引,并尝试使用Shapely进行交点。 我的测试代码如下: #point shapefile representing location of desired focal statistic traps = fiona.open('single_pt_speed_test.shp', 'r') #polygon shapefile representing land cover of interest gl = MultiPolygon([shape(pol['geometry']) for pol in fiona.open('class3_aa.shp', 'r')]) #search area areaKM2 = 20 #create empty spatial index …

5
OpenLayers 3中的Z索引:OL3中的图层排序
是否像旧版本一样,可以在OpenLayers3中更改图层的Z索引? map.setLayerIndex(markers, 99); //set the marker layer to an arbitrarily high layer index 我需要在整个地图中更改图层顺序。所以像这样定义z-index的可能性没有帮助 var geoLayer = new ol.layer.Vector({ source : new ol.source.GeoJSON({ projection : 'EPSG:900913', url : './myGeoJson.json' }), style : function(feature, resolution) { var text = resolution < 5000 ? feature.get('name') : ''; if (!styleCache[text]) { styleCache[text] = …

4
在OpenLayers3中缺少LayerSwitcher?
我想知道LayerSwitcherOpenLayers 3中是否有控件? 我读到ol3是完整的重写。但是我似乎无法LayerSwitcher从http://openlayers.org/en/latest/apidoc/ol.control.html找到与之等效的东西。我看不到没有此控件如何打开和关闭图层。是否已LayerSwitcher重命名为其他名称,丢失或文档不完整? 如果OpenLayers3没有LayerSwitcher,没有人知道实现自定义控件的示例,例如旧的LayerSwitcher吗?


2
如何使用PostGIS计算连接所有点的最小网络?
我有一组postgis脚本,它们生成两个表-一个是一组点,第二个是围绕它们的道路。所有数据都在同一投影中,并且两个输出都存储在带有postgis 2.1的postgres 9.2表中 道路网的注浆拓扑已创建,点表中的列包含最近的路段。 然后,我想生成道路网的一个子集,该子集代表使用最小生成树之类的东西连接所有点的最小网络。道路网络是无方向性的,成本只是路线长度。 我可以使用v.net系列模块在QGIS / Grass中执行此操作,但理想情况下,我也希望在SQL中保留最后一步。 我已经看过新的apspWarshall postgis函数,但是对于如何鼓励它将精力集中在连接点而不是整个网络上,我感到困惑。 这是我编写的简短脚本,试图创建一个框架来解决此问题,但我看不到在哪里可能集中功能从边缘的子集开始。 SELECT seq, id1 AS node, id2 AS edge, cost, the_geom FROM pgr_apspWarshall('SELECT gid AS id, source, target, st_length(the_geom) AS cost FROM road_network ', false, false ) AS tree JOIN road_network As roads ON tree.id2 = roads.gid 在单路径最短路径问题中,该功能要求起点和终点,但显然不是在所有问题上都要求。同样在草丛中,v.net.spanningtree和v.net.steiner期望将一组点和线作为组合网络使用。 有没有人对如何在PostGIS中做到这一点提出建议?
13 postgis  routing 



3
如何使用Leaflet有效显示大量数据集的一部分?
我一直看到非GIS Web开发人员遇到此问题,而且我不确定解决方案是什么。 有一些包含数千个项目的数据集。 我们希望向用户显示地图,其中可见的子集显示为交互式,可单击的元素。 有什么方法可以做到这一点? 我可以想到这些,但是它们并不令人满意,所以我想知道还有什么: 将所有数据存储在GeoJSON文件中,将其传输到浏览器,然后让Leaflet显示它。问题:不适用于大型数据集。TopoJSON稍微提高了限制。这也会在页面加载时造成很大的延迟。 使用Mapbox,将所有数据存储在Mapbox的交互式图层中,然后使用Mapbox.js进行显示。效果不错,但要花钱,而且您不能自己托管它。 使用GeoServer访问PostGIS数据库,使用WFS-geojson传单插件从那里访问数据。它可能可以工作,但是似乎不再维护WFS-geojson Leaflet插件。 使用CartoDB,将所有数据存储在CartoDB表中,然后使用CartoDB.js进行显示。效果很好,但价格可能非常昂贵。可以自己托管它,但安装CartoDB并非易事。 所有这些使我认为我必须缺少一些更好的,自由的方法。它是什么? 编辑 也许我太容易注销了WFS-geojson插件。有一个叉子仍然可见一些活动(4个月前):https : //github.com/johanlahti/azgs-leaflet

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.