地理信息系统

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

1
PostGIS按纬度/经度边界框选择
我在地图上绘制的框中有一个minLat,minLong,maxLat和maxLong。现在,我要获取框中所有点的查询如下所示: SELECT * FROM geomTable WHERE (longitude BETWEEN minLon AND maxLon) AND (latitude BETWEEN minLat AND maxLat) 我想使用几何列而不是纬度/经度列来获取结果。我试过这个查询: SELECT * FROM mytable WHERE mytable.geom && ST_MakeEnvelope(minLon, minLat, maxLon, maxLat, 4326); 从这篇文章中:使用postgis选择边界框,但未返回任何结果。 有没有人举过一个例子,说明如何使用Postgis中的几何图形在由最小和最大纬度/经度创建的框中选择所有点?
18 postgis 

5
在QGIS中更改图层的数据源
有没有一种方法可以将Shapefile转换为QGIS中的图层文件,就像您在ArcGIS图层的属性中执行此操作一样?(即转到图层属性,“源”选项卡,然后只需按下'Set Dat Source'按钮) 我遍历了QGIS中的图层属性,但在任何地方都看不到... 编辑:我已经收到评论,说明您不能使用shapefile进行此操作,但是如果我要更改shapefile的名称,然后打开一个包含该shapefile作为图层的现有项目文件,则将获得“句柄” Bad Layers的对话,这使我可以导航图层并将图层重新来源到想要的任何shapefile。我觉得可以在这种情况下使用资源很奇怪,但是您不能通过图层属性对话框手动进行操作。
18 qgis  data-source 


4
使用QGIS从shapefile字段中获取不同值的列表?
我有一个shapefile,可以通过在查询对话框中指定where子句来过滤其功能。Fx我有一个名为“ city_name”的字段,并在where子句中声明“ city_name =“ London”“,仅显示伦敦。我现在想做的是从属性表中获取“ city_name”中的所有值。 像这样: select distinct city_name from [attribute table] 我在QGIS中发现了一些显然可以处理SQL的工具,并且还快速浏览了不同的插件。但是我无法连接到数据库或表名...在那种情况下是哪个数据库或哪个表? 最后,我想导出结果列表并将其用于进一步处理。 我正在使用QGIS 1.8。
18 qgis  shapefile  sql 


4
为什么有效的多边形重复相同的起点和终点?
在GIS世界中,对于大多数现代格式和标准(例如Shapefile,WKB / WKT,GML,KML等),有效的多边形需要具有闭合的线性环,这是坐标线串,其中第一点是重复点最后一点。例如,一个三角形需要四个点(而不是三个)。 POLYGON ((10 20, 30 60, 50 20, 10 20)) 谁发起了这项公约,为什么?这是预形状文件存储的传统吗?(怎么样MS Windows仍然使用2个字节的CR + LF换行?)其他非GIS标准(如SVG)并不需要这种重复进行编码的多边形。

4
在ArcGIS Desktop中实现环形图
在Stewart和同事在IJHG 的最新文章中,我偶然发现了使用环图可视化数据的有趣技术。关于这项技术的文章中引用一些更多的信息在这里和这里。 [ 来源 ] 从文章: 环形地图是通过使用自定义脚本在Adobe Illustrator中创建的,该脚本可以动态绘制,分布和符号化所有图形地图元素。从包含所有县属性数据的逗号分隔值(CSV)文件中读取符号化的值。绘制了三个县级环形地图。 有没有一种方法可以像ArcGIS Desktop 10中那样自动实现地图?

1
如何为PostGIS距离查询正确设置索引?
我正在构建一个应用程序,该应用程序应查询并返回距离数公里Record的表中的每个表。和的位置取决于Google Geocode API提供的信息。XPointXRecordsPointX(long/lat) 我是PostGIS的新手。经过快速研究,我发现了这个问题。答案似乎是: SELECT * FROM your_table WHERE ST_Distance_Sphere(the_geom, ST_MakePoint(your_lon,your_lat)) <= radius_mi * 1609.34 问题是:即使我只是开始使用GIS,但是当我看上述查询时,我无法想象它如何使用索引。有2个函数调用。我想象每张桌子都要扫描Record。我想错了:) 问题:PostGIS是否具有任何能够使上述查询具有性能的索引类型?如果没有,那么推荐的方法将满足我的需求?

5
在GeoServer中启用CORS(码头)?
我希望有人已经知道了这一点。我刚刚在香草Ubuntu 16.04发行版上安装了Geoserver 2.9。使用shanbe.hezoun类启用CORS的Geoserver 2.8方法在Jetty 9.2.13中不再起作用。 提到在Jetty-servlets.jar中,Jetty 9.2.13已打包了CORS支持。 用Geoserver编译的Jetty库在geoserver / lib中包含一个jetty-servlet-9.2.13.v20150730.jar,但不包含jetty-servlets.9.2.13.v20150730.jar。这些应该是同一个罐子,但名称不同吗? 应该可以在geoserver / etc / webdefault.xml或geoserver / webapps / geoserver / WEB-INF / web.xml中启用CORS。 我的理解是,首先应用webdefault.xml,然后再应用web.xml。 我已经尝试了两个xml中的以下过滤器。我还没有添加过滤器映射。单独添加过滤器将导致Geoserver / Jetty服务无法正常启动。 <filter> <filter-name>cross-origin</filter-name> <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class> </filter>
18 geoserver  cors  jetty 


4
使用“ ESRI Shapefile”驱动程序时如何从缩写字段名称中停止writeOGR
我目前正在使用以下脚本将表中的某些属性数据添加到很多单独的shapefile中: library(rgdal) specieslist <- read.csv("SpeciesList1.txt", header=F) attdata <- read.table("TestAtt.csv", sep = ",", header=T) for (n in 1:dim(specieslist)[1]) { speciesname <- specieslist[n,1] shp <- readOGR("Mesoamerica_modified_polygons", speciesname) shp$ENGL_NAME<-attdata[n,2] writeOGR(shp, "PolygonsV2", speciesname, driver="ESRI Shapefile") } 最后我得到以下警告: 1: In writeOGR(shp, "PolygonsV2", speciesname, driver = "ESRI Shapefile") : Field names abbreviated for ESRI Shapefile driver …

1
Postgis-将“ geometry_dump”数据类型转换为“ geometry”类型
我正在使用已在其上运行ST_Union()的属性边界的数据集,因此所有多边形在表的一行中都显示为多多边形。我想将它们分开,以便为每种形状得到单独的行/多边形。我试过在其上运行ST_Dump(),它似乎可以分离出数据集中的多边形,但是我无法再在GIS中查看它(我目前正在使用QGIS)。此列的数据类型称其为'geometry_dump',我认为这就是为什么我无法对其进行可视化的原因。当我从QGIS访问我的Postgres数据库时,此新表将列在没有几何图形的数据集的标题下。 有谁知道我可以做些什么将“ geometry_dump”转换为“ geometry”?

3
使用ArcGIS Field Calculator在属性表中舍入列?
我想使用ArcMap中的字段计算器将现有列舍入到两位小数。目前,我有一列长6位小数的小数位数,想简单地将其舍入到2位小数。 我曾计划使用字段计算器(可能使用Python)来执行此操作,但是也许有更简单的方法吗? 可接受的答案可能是更改单个字段的最简单方法,但是,这是如何使用适用于python和VB的字段计算器来实现的。 VB: round([column], 2) 蟒蛇: round(!column!, 2)

4
使用OGR和Python获取多边形的所有顶点
我在使用Python OGR API时遇到了一些麻烦。我想做的是获取多边形外环每个顶点的所有坐标。 这是我到目前为止所拥有的: import osgeo.ogr import glob path = "/home/woo/maps/" out = path + 'output.txt' file = open(out,'w') for filename in glob.glob(path + "*.shp"): ds = osgeo.ogr.Open(filename) layer1 = ds.GetLayer(0) print layer1.GetExtent() for feat in layer1: geom = feat.GetGeometryRef() ring = geom.GetGeometryRef(0) points = ring.GetPointCount() #Not sure what to …


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.