地理信息系统

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

3
如何从命令行查找shapefile的属性?
我正在关注Mike Bostock的教程“让我们绘制地图”。他介绍了如何ogr2ogr根据特征的属性来过滤shapefile 。我可以在QGIS中打开shapefile,然后查看属性表以找出那些功能。有没有办法从命令行中找到该信息?

1
PostGIS中计算栅格统计数据的性能
我正在尝试使用PostgreSQL / PostGIS计算矢量层中每个多边形的栅格统计信息(最小值,最大值,平均值)。 这个GIS.SE答案描述了如何通过计算多边形和栅格之间的交点然后计算加权平均值来做到这一点:https : //gis.stackexchange.com/a/19858/12420 我正在使用以下查询(dem我的栅格在哪里,topo_area_su_region我的矢量在哪里,并且toid是唯一的ID: SELECT toid, Min((gv).val) As MinElevation, Max((gv).val) As MaxElevation, Sum(ST_Area((gv).geom) * (gv).val) / Sum(ST_Area((gv).geom)) as MeanElevation FROM (SELECT toid, ST_Intersection(rast, geom) AS gv FROM topo_area_su_region,dem WHERE ST_Intersects(rast, geom)) foo GROUP BY toid ORDER BY toid; 这可行,但是太慢了。我的矢量层2489k的特点,周围每个人服用90毫秒到过程-这将需要几天来处理整个层。如果仅计算最小值和最大值(这避免了对ST_Area的调用),则计算速度似乎并没有明显提高。 如果我使用Python(GDAL,NumPy和PIL)进行类似的计算,则可以显着减少处理数据所需的时间,而不是对栅格进行矢量化处理(使用ST_Intersection),可以对矢量进行栅格化。在此处查看代码:https : //gist.github.com/snorfalorpagus/7320167 我真的不需要加权平均值-“如果碰到就行了”的方法就足够了-而且我有把握地确定这是放慢速度的原因。 问题:有什么方法可以使PostGIS像这样运行?即从多边形所接触的栅格中返回所有像元的值,而不是返回精确的交集。 我是PostgreSQL / PostGIS的新手,所以也许还有其他我做不正确的事情。我正在Windows …

3
使用python和QGIS将文件夹循环以按多边形批处理剪辑栅格吗?
我正在使用python和QGIS 2.0。我正在尝试通过一个面要素来裁剪文件夹中的栅格。这是我第一次使用(例如)“ PyQGIS”,以前我习惯使用arcpy。无论如何,我没有让我的简单脚本起作用,任何建议将不胜感激! import qgis.core, qgis,utils QgsApplication.setPrefixPath("C:/OSGeo4W64/apps/qgis", True) QgsApplication.initQgis() CLIP= "C:/Users/unim/Documents/Umberto/Universita/PhD/Guglielmin/Permafrost/Alta_Valtellina/Landsat_ita/study_area_foscagno.shp" INPUT_FOLDER="C:/Users/unimi/Documents/Umberto/Universita/PhD/Guglielmin/Permafrost/Alta_Valtellina/Landsat_ita/LE71930282000259EDC00" OUTPUT= "C:/Users/unim/Documents/Umberto/Universita/PhD/Guglielmin/Permafrost/Alta_Valtellina/Landsat_ita/foscagno_pyqgis/" for RASTER in INPUT_FOLDER.tif do echo "Processing $RASTER" gdalwarp -q -cutline CLIP -crop_to_cutline -of GTiff RASTER OUTPUT+ "clip_"+ RASTER done QgsApplication.exitQgis() 以下是我从现在开始所做的改进,虽然没有使脚本起作用,但是我想我可能会越来越近... import qgis.core, qgis.utils, os, fnmatch from osgeo import gdal CLIP= "C:/Users/unimi/Documents/Umberto/Universita/PhD/Guglielmin/Permafrost/Alta_Valtellina/Landsat_ita/study_area_foscagno.shp" INPUT_FOLDER= "C:/Users/unimi/Documents/Umberto/Universita/PhD/Guglielmin/Permafrost/Alta_Valtellina/Landsat_ita/LE71930282000259EDC00/DNs2Reflectance_LE71930282000259EDC00" OUTPUT= …
9 gdal  pyqgis  gdalwarp 

1
当该地点的名称明确或不清楚时,是否有相应的名称?
这并非特定于任何系统。假设在地形上有一块大红色岩石,可以轻松找到并清楚看到它,并且在那块大红色岩石附近有一个人造物体,例如购物中心。 该对象可能具有与其位置相匹配的名称,例如“大红色岩石购物中心”,因此在岩石附近寻找那个购物中心会很直观,或者它的名称可能不匹配,从而使搜索更加困难。 我敢肯定,这是在GIS系统中引起的,并导致人们在这种名称不正确的对象旁边放置一些元信息。 在这两种情况下,是否有一个广泛使用的术语,意味着“对象名称与其位置的匹配程度”?

3
剪辑大型栅格ECW文件的最佳方法?
我正在尝试剪切较大的ECW(详细信息如下),但是光栅文件太大而无法完全处理。 以下ECW的一些详细信息 驱动程序:ECW / ERDAS压缩小波(SDK 5.0) 文件大小:50gb大小为450000、565081像素大小:0.15 0.15 COLORSPACE = RGB COMPRESSION_RATE_TARGET = 9 VERSION = 2波段数:4 我要裁剪的区域大约是原始文件的1/5。 这是我尝试不成功的方法: 使用Arcgis将ecw保存为tiff /其他格式...(我很快就放弃了) 使用了Qgis及其裁剪器工具...文件创建停留在40%左右。 除了Qgis以外,还使用gdal_translate从OSGeo4W中退出。(试图以为可以不使用Qgis释放一些内存就可以了) 使用gdal_retile的想法是,我会将图像切成小块,然后抓住想要的图像。命令“ gdal_retile -ps 10000 10000 -of ecw -tileIndex tile.shp -targetDir input.ecw这崩溃得更快” 有人有主意吗? 有关信息,我在具有16GB内存的i5-3470 3.2Ghz上运行Windows 7 64位。
9 raster  gdal  clip  ecw  big-data 


2
qgis 2.0中有什么方法可以防止标签重叠?
qgis 2.0中有什么方法可以防止标签重叠? 我的图层具有较大的地理范围,这意味着要塞很多标签。他们中的许多人相撞,看起来真的很糟糕。有没有办法让我让qgis自动将标签放置在替代的“位置”上? 我知道在MapInfo中是可能的,但我宁愿使用qgis :)
9 qgis  labeling  qgis-2 


3
设置OpenLayers 3层可见性
我正在尝试将我的Openlayers 2.12映射升级到Openlayers 3,以利用透明层上奇妙的过渡效果(有些OL2和Leaflet无法吸引人)。当OL3正式发布时,我也不想落后于升级我的网站。在当前站点(OL2.12)中,我使用简单HTML菜单中的复选框来切换图层可见性。我将每个图层推到一个数组(我希望我认为OL3现在会自动为称为“图层”的图层生成一个数组),并且每个复选框都调用此函数(为复选框提供了代表其图层数组编号的值): function layerswitch(evt){ layers[evt.value].setVisibility(evt.checked); } 在OL3中,这不再起作用,并且我找不到任何详细说明如何设置图层可见性的示例或文档。

3
这是ArcGIS的新功能,希望“在鱼游动时”计算两点之间的距离
我们有一个名为Hydrography的图层,它是给定任务的水域。我有一个车站和一个目标点。我需要计算这两个点之间的距离,但要计算在水文内部。(船不能越过陆地) DefenseService距离计算看起来是可以通过的,但是它似乎是一条直线,因为它不使用任何Raster作为输入。欧几里得似乎快要在那里了,但是我找不到任何直接的东西。 我正在使用ArcGIS Explorer 2500,ArcGIS for Server 10.1 SP1 Enterprise,并且我们正在用C#编写服务和工具。 我负责水文学的编写和IPoint的创建,但是下一步该怎么办! 任何帮助,请。

2
如何指定要从QGIS导出的字段?
我正在使用QGIS 2.0.1,并且已连接到MS SQL Server具有空间功能的数据库(不是ESRI)。我能够连接到该层并将其加载到我的目录中。我隐藏了一些对于可见性而言并不重要的字段。 现在,我想将该数据导出为另一种数据类型(在此示例中,我们将使用shapefile)。右键单击图层,选择“另存为”并定义输出文件时,出现以下错误: 导出到矢量文件失败。错误:字段GlobalID的不受支持的类型 注1:如果在对话框中选中“跳过属性创建”,则shapefile的创建没有错误。 注意2:ArcGIS不会出现此问题,它只是将GUID字段转换为“ TEXT”类型。 查看表,我隐藏的字段之一是SQL类型< uniqueidentifier > 的GUID ,这很可能是罪魁祸首。为了解决此问题,我将该字段设置为“隐藏”。我本来以为因为该字段是隐藏的,所以QGIS不会尝试导出该字段,但事实并非如此。 您可以定义要从QGIS导出的字段吗? QGIS是否可以仅导出“可见”字段?还是有另一种从QGIS执行此操作的替代方法(也许通过ogr2ogr查询定义字段)?如果我无法定义要导出的字段,这似乎是QGIS的缺点。 更新:我使用一个示例shapefile进行了测试,以查看是否可以限制输出字段。以下ogr2ogr命令行有效并消除了除“名称”之外的所有字段: ogr2ogr -f "ESRI Shapefile" test.shp city.shp -sql "select name from city" 但是使用QGIS并添加: -sql "select name from city" “另存为”对话框的“层”部分中的“否”不会导致仅带有单个字段的shapefile。因此,我真的看不到如何处理文件输出以仅显示选定的几个字段。任何帮助表示赞赏。

2
接驳巴士服务
首先,有一点背景。 我在区域运输机构工作。我们正在对馈线巴士服务进行“诊断”。我们想知道有多少比例的用户可以乘公共汽车去火车站而不是开车。这已经完成了几次,但是现在我们使用gtfs作为主要数据源,因此我们必须重新考虑我们的方法。 要被视为“为火车供餐”,公共汽车路线必须在距火车站一定距离内的车站(红色缓冲区)停靠。同样,与火车服务的同步性也很重要,因为如果您的巴士在火车前半小时到达火车站,那么等待时间就太长了,您将需要早上多睡20分钟才能开车。 假设您在12号车站乘A线(蓝色),然后在13号车站下车。公交车到达13号车站,这是火车前5分钟到达1号火车站的车站。这是非常好的。这意味着每个在1到13站内乘坐该公交车的人都将在火车开行前5分钟到达。 然后,火车经过人口稠密的地区,那里有很多学校和人行横道,被迫大幅度降低其速度。同时,公交车在14至17号车站接载乘客,并在火车开行前10分钟到达2号火车站。因此,一旦到达火车站,在14至17号车站乘坐公共汽车的乘客将都有10分钟的等待时间。因此,沿着那条公交线路,在1至13号车站乘坐巴士的乘客的等待时间为5分钟,而在14至17号车站乘坐巴士的乘客的等待时间为10分钟。 B线在轨道的另一侧,经过1号火车站附近,但其车站距离太远,无法考虑“为1号火车站供餐”。它在火车出发前7分钟到达2号火车站(在高峰期,每趟火车都要这样做;它的同步性很好)。因此,沿着B线的乘客从1号车站到59号车站到处都有巴士,等待时间为7分钟。 现在,我的问题。一旦我确定LineA.13和LineA.17停靠站正在为我的火车供电(这是在PostGIS中在空间上完成的),并且在#13之前停靠的公交车的等待时间是5分钟,但之后的等待时间是等待时间为10分钟,我该如何为所有停靠站分配等待时间? 我想在Postgres / PostGIS(pl / pgsql或pl / python)中做到这一点,但是我也可以使用纯python(OS或arcpy)。 我认为我可以向后循环。因此,一旦我找到合适的停靠点(在这里为LineA.17),就将相同的等待时间分配给停靠点16,然后是15 ...直到找到另一个适合我的条件的停靠点(LineA.13),然后分配其余的停靠点的等待时间与13。 我不知道如何创建这样的循环。我不认为我可以用SQL做到这一点,所以我不得不在PostgreSQL中使用过程语言。 我有一个使用pgRouting来找到每个供料器停靠点之间的路线的想法,这样一来,线A就会一分为二(停靠点1至13,然后停靠13至17)。这样会更容易吗? 下一步,将使用pgRouting从所有有等待时间的站点(抱歉LineA.18及以上!)计算出行驶时间,并将其与公交车的时间表进行比较以计算竞争力(是否需要5在公交车上比在车上多几分钟? 有任何想法吗?我通常会发布一个冗长的正在进行中的脚本,以显示到目前为止我所做的努力,但是我被困住了!

7
如何使用基本OSM和Geoserver WMS图层打印Openlayer?
我有一张要在用户打开某些图层后打印的地图。这些层是geoserver wms,基础层是OSM。 我知道geoserver具有打印模块(该模块已安装并且可以正常工作,因为我收到geoserver / pdf / info.json?var = printCapabilities的回复 我不了解的是如何使用它来打印具有可见图层的当前地图。 我看过GeoExt示例(mapfish),但并没有帮助我理解。 更新1: 我通过代码生成了以下URL: http://77.235.53.170/geoserver/pdf/print.pdf?spec={%22units%22:%22degrees%22,%22srs%22:%22EPSG:4326%22,%22layout%22:%22A4%22,%22dpi%22:%22300%22,%22mapTitle%22:%22This%20is%20the%20map%20title%22,%22comment%22:%22This%20is%20the%20map%20comment%22,%22resourcesUrl%22:%20%22http://77.235.53.170/img%22,%22layers%22:[{%22baseURL%22:%22http://77.235.53.170/geoserver/Lehavim/wms%22,%22opacity%22:1,%22singleTile%22:true,%22type%22:%22WMS%22,%22layers%22:[%22%D7%A7%D7%95%20%D7%9E%D7%99%D7%9D%22],%22format%22:%22image/jpeg%22,%22styles%22:[%22%22]}],%22pages%22:[{%22center%22:[3875254.1134954,3680894.557955],%22scale%22:32000,%22rotation%22:0}]} 而且我得到的PDF为空(仅包含标题)...可能出什么问题了?

2
在Ubuntu上为GDAL 1.10构建FGDB支持
由于data.gc.ca现在正在以FGDB格式分发其某些数据(例如:Plant Hardness Zones),因此我希望能够将其与gdal / QGIS一起使用。但是,编译/安装未按计划进行。 这些是我已采取的步骤: 为ubuntugis-unstable启用了源存储库。 下载了Linux 64位File Geodatabase API 1.3,将其安装在中/usr/local/FileGDB_API,添加了必要的ldconfig设置,并成功构建并运行了测试程序。(如此处建议的过程:[Qgis-user]如何使用ESRI FileGDB编译gdal) 安装了必要的源依赖项: sudo apt-get build-dep gdal 下拉来源: apt-get source gdal 将行添加--with-fgdb=/usr/local/FileGDB_API \到debian/rules文件中的configure命令。 从发出的源目录中dpkg-buildpackage -rfakeroot -uc -b(如此处建议:如何获得通过apt-get安装的软件包的源代码?-Ask Ubuntu) 构建进行得很好,但是在软件包编译阶段失败了,抱怨fakeroot文件系统中缺少Ruby 1.9树: … mv /home/scruss/gdal-1.10.0/debian/tmp/usr/local/lib/site_ruby/1.9/* /home/scruss/gdal-1.10.0/debian/tmp/usr/lib/ruby/1.9/. mv: cannot stat ‘/home/scruss/gdal-1.10.0/debian/tmp/usr/local/lib/site_ruby/1.9/*’: No such file or directory make: *** [install] Error 1 dpkg-buildpackage: …

1
带有GDAL和PostGIS的Python替代了ArcGIS
几次前,我处理了阿拉斯加大小的每日地面温度卫星图像。 我必须处理大约一千张图像。我下载了它们,进行镶嵌,投影,修剪到shapefile边界,从修剪的栅格中提取均值,然后在时间-温度图上绘制均值。时间-温度图是最终输出。我在ArcGIS中完成了所有这些工作,即使我创建了有助于自动完成一部分工作的ArcPy脚本,也仍然很艰辛。 现在,我想构建一个执行相同操作但自动100%完成的程序。我只想将拐角的坐标输入到程序中,以便定义感兴趣的区域并获得生成的最终输出,即时间-温度图。 您认为使用Python与GDAL库和PostGIS作为栅格数据存储库是否可行?

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.