地理信息系统

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

1
GeoPandas to_file()保存不带坐标系的GeoDataFrame
我有 GeoPandas 0.2.1 py27_0 菲奥娜1.7.0 np110py27_1 Python 2.7.10 安装在Anaconda 2-4.1.1-Windows-x86环境中。我能够GeoDataFrame通过读取输入数据集并进行操作来构造数据,但是保存输出数据集不会保留坐标系。 import geopandas as gpd world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres')) world.to_file(driver='ESRI Shapefile',filename=r'C:\GIS\Temp\world_out.shp') 在world_out.shp不包含的特征和源shape文件的模式,但坐标系是未定义的(<Unknown>)。该world_out.prj文件为0 KB,不包含任何内容。 out = gpd.read_file(r'C:\GIS\Temp\world_out.shp') print out.crs >>> {} 我已经测试过使用纯Fiona执行此操作,并且可以很好地保存crs信息: import fiona datasrc_path = r'C:\Program Files (x86)\ArcGIS\Desktop10.4\TemplateData\TemplateData.gdb' with fiona.drivers(): with fiona.open(datasrc_path,layer='cities') as source: meta = source.meta meta['driver'] = 'ESRI Shapefile' meta['layer'] …

3
使用Python检查点是否在多多边形内
我已尝试使用诸如shapefile,fiona和ogr之类的库的几个代码示例,以尝试检查点(x,y)是否落在用ArcMap创建的多面体的边界内(从而以shapefile格式)。但是,尽管这些示例对于常规的单个多边形shapefile也能很好地工作,但是它们都不能很好地与multipolygons配合使用。我尝试过的一些代码片段如下: # First example using shapefile and shapely: from shapely.geometry import Polygon, Point, MultiPolygon import shapefile polygon = shapefile.Reader('shapefile.shp') polygon = polygon.shapes() shpfilePoints = [] for shape in polygon: shpfilePoints = shape.points polygon = shpfilePoints poly = Polygon(poly) point = Point(x, y) # point in polygon test if polygon.contains(point): print …



4
根据边界框动态设置缩放级别
我有一个传单地图,其大小取决于浏览器窗口的大小。我希望动态选择缩放级别,以便在显示整个边界框的同时尽可能放大。 现在,我只是对缩放级别进行了硬编码,并根据平均点数获得了中心点。 map = new L.Map('map', { center: new L.LatLng( latitudeSum/locations.length, longitudeSum/locations.length ) zoom: 9 }) 相反,我想给它一个边界框(两个岛),并根据窗口的大小选择缩放级别。
13 leaflet 


2
在2D地图中投影EPSG:4326数据?
我想认为我比较精通基准面,投影和坐标参考系。 OpenStreetMap数据存储在WGS84纬度/经度(EPSG:4326)中。此CRS具有地理意义,因此旨在将位置存储在3D地球上。当我看到这张地图时,我在看什么? 看着雷克雅未克,看来经线趋向于格林那子午线的北极(或者也许他们以透视图计划了这座城市?),所以我假设0,90是地图的顶部中心。 这堂课是不是一个投影?如果是,那是投影? 是否有一个通常用于纬度/经度数据的投影? 我使用EPSG:4326将数据存储在Oracle中,当由GeoServer渲染而没有指定投影时,它也显示这些特征。

3
QGIS在打印布局中提供了不同的分辨率底图
我使用来自512像素图块的在线来源中的图块化背景图,并尝试通过打印布局和PDF导出功能将其用作打印图的背景。问题:瓦片缩放级别的选择似乎自动取决于DPI设置。 底图图层简单定义为具有以下URL的“ XYZ瓷砖”图层: http://1.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}@2x.png 在预览中,它使用屏幕dpi(也许为70),并且我在地图窗口和“打印布局”中都看到了该地图。此处的缩放比例为16。根据我的需要,街道名称又大又可读。 现在要打印,我需要600(或更多)DPI PDF-s。当我将此设置为“布局的导出分辨率 ”并创建PDF时,突然导出器从zoom 18中获取了图块,因此导出的PDF具有不同的地图,如下所示。QGIS可能会尝试将打印分辨率与图块原始分辨率匹配,但这对于这样的光栅图块来说是个坏主意,因为您最终得到的文本非常小。对于卫星而言,这种重新缩放可能是有意义的,但对于文本等与比例相关的样式的地图则不可行。模式是300 DPI有+1缩放,600 +2缩放等。 在这里的屏幕截图中,差异可能不如实际打印输出中那样明显,但它非常可怕。 问题:有没有办法在QGIS打印布局中调整与多分辨率栅格图层分辨率匹配的魔术? 这个WMS问题似乎很相似,也许核心问题是相同的:如何以选定的比例和WMS缩放级别打印WMS地图? 顺便说一句,我的快速补救措施是现在使用“打印布局”中的栅格屏幕截图,但是随后我松开了PDF矢量,这将在地图顶部提供更清晰的矢量文本和SVG矢量图标。
13 qgis 

2
使用QGIS将点簇转换为多边形?
我有一个输入点图层,该图层被分组为多个群集,因此我想将每个点的群集转换为多边形。 这个问题(如何根据QGIS中的特定字段将点集转换为多边形)似乎与我想要的答案很接近,尚未得到解答。 因此,基本上,我需要QGIS中的一种算法,该算法可以将如下所示的每个点簇(基于属性字段)转换为多边形? 我已经尝试过'Point2One'插件,它给了我错误的结果,如下所示... 在这里找到我的数据副本。

4
没有名为“ osgeo”的模块
我已经安装了GDAL并在命令行中进行了检查,它正在运行,当我在命令行中运行gdal2tiles.py时,它可以工作,但是当我使用python IDLE运行相同的文件gdal2tiles.py时,我得到了“没有名为'osgeo的模块'”错误。你能帮忙吗
13 python  gdal  osgeo  osgeo4w  pyqt4 

2
将GeoJSON载入QGIS
我是QGIS的初学者。我正在尝试通过lynda.com学习它。我尝试下载GeoJSON格式的nanaimo犯罪地图,但收到一条消息,指出数据源无效。 我按照信中的指示为自己的工作感到困惑。
12 qgis  geojson 

3
如何在地图中的要素旁边显示图表?
这个问题主要是针对QGIS软件的,但是欢迎所有其他软件解决方案,只要有可能,就可以尽可能轻松地实现,最好是开箱即用。尽管限制是静态地图(要打印),所以没有适用于此处的交互式Web地图解决方案。 有没有一种方法可以为时间序列数据/点表(也可以是线/多边形)创建图表(QGIS中的工具/插件)并将其显示在要素旁边? 我知道简单的图表/直方图工具。我也有一个将图表加载为SVG的想法,但这意味着我需要首先导出很多图表,然后将它们手动链接为符号。有没有更深刻的现成解决方案? 到目前为止,我尝试过的内容如下: 我想要实现的目标如下:

3
删除字典理解范围内SearchCursor中使用的光标?
如果最好使用with语句打开游标以确保将其删除,如下所示: with arcpy.da.UpdateCursor(fc,fields) as cursor: 然后,如果将游标用作像这样的理解中的可迭代对象: d = {k:v for (k,v) in arcpy.da.SearchCursor(fc,fields)} 在理解中使用光标后是否有必要删除它?
12 arcpy  cursor 

1
更改最小边界框算法
我正在尝试创建类似于最小边界框的算法(尽管最终可能看起来不像它)。在这种情况下,角度将作为参数传递,并且给定角度,我需要覆盖所有点/多边形的最小矩形。到目前为止,我的思路是找到点的中心(质心算法),然后从中创建两条与参数角相同的平行线,以及两条与之垂直的线。然后使用迭代将这些线向外(沿相反的方向)移动,直到包含所有点。也不必是确切的最小边界框,近似的作品(我想这取决于每个迭代步骤的大小)。 到目前为止,这是我的代码。我已经将所有多边形分解为一个。然后,我采用凸包来减少顶点。然后,我将所有顶点都放入列表中-不确定是否有帮助... a = layer.getFeatures() for feat in a: geom = feat.geometry() a = geom.convexHull() vertexId = QgsVertexId() vertices = [] b = a.constGet().nextVertex(vertexId) while b[0]: vertices.append(b[1]) b = a.constGet().nextVertex(vertexId) 注意:在某些时候,我需要传递盒子的角度。我正在使用QGIS 3,并且需要在Python中创建它。图层“图层”具有一种几何形状,即所有其他多边形的溶解多边形-也许不需要迭代即可访问它。 请让我知道我是否应该传递更多详细信息。

7
在Mac上的QGIS中,地图显示无法填充窗口吗?
在QGIS的此屏幕截图中,您可以看到地图没有填充窗口。我尝试了各种方式调整窗口大小。 我是否缺少明显的东西,或者这是一个错误? 版本: MacBook Pro MacOS High Sierra 10.13.5 QGIS版本3.2.1-Bonn QGIS代码分支3.2版 根据Qt 5.9.6编译 针对Qt 5.9.6运行 根据GDAL / OGR 2.2.4编译 针对GDAL / OGR 2.2.4运行 根据GEOS 3.6.2-CAPI-1.10.2编译 针对GEOS 3.6.2-CAPI-1.10.2 4d2925d6运行 PostgreSQL客户端版本9.6.6 SpatiaLite版本4.4.0-RC0 QWT版本6.1.3 QScintilla2版本2.10.7 PROJ.4版本493 Python 3.6.6
12 qgis  mac  qgis-3.2 

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.