Questions tagged «sql»

结构化查询语言的缩写。从关系数据库检索和处理数据的语法。

2
在Postgis中获得类似于ArcGIS的速度
我已经使用3/4年的Postgis 2.0了,虽然我真的很喜欢使用它,但是查询处理时间过长,使得它基本上无法用于我的用例。 我倾向于对通常具有成千上万个多面体的市政数据集进行繁重的地理处理。这些多面体的形状有时会非常不规则,每个多面体的范围从4点到78,000点不等。 例如,当我将一个包含329,152个多边形的宗地数据集与包含525个多边形的管辖权数据集相交时,我得到了以下消耗总时间的统计信息: ArcGIS 10.0 (on same host with windows 7 OS): 3 minutes Postgis:56 minutes (not including geometry pre-processing queries) 换句话说,在Postgis中进行此相交所需的时间比在ArcGIS中多1500%,这是我更简单的查询之一! 据说ArcGIS运行速度更快的原因之一是由于索引更好。一些程序员最近弄清楚了这些索引是如何工作的,我想知道是否有人知道如何在Postgis中构建这些索引(或构建可以模拟索引的表)。也许这可以解决Postgis中的大多数速度问题。我只能希望一定有办法,尤其是因为ArcGIS只能使用4 GB的RAM,而我的postgis服务器最多可以使用4倍的内存! 当然,postgis运行缓慢的原因有很多,因此,我将提供系统规格的详细版本: Machine: Dell XPS 8300 Processor: i7-2600 CPU @ 3.40 GHz 3.40 GHz Memory: Total Memory 16.0 GB (10.0 GB on virtual machine) Platform: Ubuntu …

4
使用PostGIS将许多小多边形连接起来以形成更大的多边形?
我在postgis中使用SRID 27700的以下层: 它是英国的每个行政区域,而且(从颜色分组中可以看到)每个区域都有一个文本字段,用于指定其所在的县。 我想做的是从给定县中的较小县制造较大的县多边形,因此图片中所有青绿色彩色多边形上方的EG将由包含所有多边形的单个外圈形成一个大多边形颜色,例如所有紫色,棕色,粉红色,灰色等,都应形成一个多边形。 我已经尝试了以下方法: insert into parishesmerged (geometry) select astext(multi(ST_Union(the_geom))) as the_geom from parishes group by county_name 但是它会不断产生破碎的几何形状,因此我在进一步处理时遇到了很大的问题。 我正在尝试使用主要输出区域制作一个更简单的县级地图。 Postgis也不需要任何解决方案,我已经安装了完整的OS4Geo堆栈,最新版本的QGis和更多实用程序,而我对此一无所知。 我唯一没有的就是像ArcGis这样的大男孩(尽管我可能在某处有一个旧的Mapinfo) 作为记录,我要创建的数据集是与我正在写的一本针对希望使用.NET编写GIS应用程序的.NET程序员的GIS书一起提供的 在尝试了以下建议之后,效果最好的是“ Paul Ramseys”解决方案。 现在,我有一个很好的简化的县(市)档案,对于我的书来说足够简单,但又足够复杂,足以让我展示一些有趣的地理空间SQL。 尽管Paul的解决方案最终是对我有用的解决方案,但我还借鉴了其他答案,例如简化了多边形图并进一步降低了复杂性。 在执行此操作时,我确实观察到了一点,尽管ST_Collect确实比ST_Union快,但运行还是它是造成几何形状损坏的主要原因。我的猜测是,速度的提高是以牺牲核心功能的准确性为代价的。
47 postgis  sql  dissolve 

8
选择在PostGIS中不相交的要素
在我看来,这似乎是一个简单的问题(可能是),但我似乎找不到能给我答案的例子。使用PostGIS,我只想选择不在多边形范围内的点。就我所知,这最终是ST_Intersects的逆函数。 示例:我有一个taxlot层和一个地址点层。我假设我应该使用ST_Intersects,但是如何告诉它进行反向选择?我以为可能在下面的代码前添加一个NOT语句,但这没有用。 CREATE table t_intersect AS SELECT hp.gid, hp.st_address, hp.city, hp.st_num, hp.the_geom FROM public.parcel as par, public.housepoints as hp WHERE ST_Intersects(hp.the_geom,par.the_geom);


4
SQL查询是否具有PostGIS的完整geojson功能?
我想从PostGIS获得带有属性的geojson功能。我找到了一个具有功能部件集合的示例,但是我不能使其仅适用于功能部件。 SELECT row_to_json(fc) FROM ( SELECT 'FeatureCollection' As type, array_to_json(array_agg(f)) As features FROM (SELECT 'Feature' As type , ST_AsGeoJSON(lg.geog)::json As geometry , row_to_json(lp) As properties FROM locations As lg INNER JOIN (SELECT loc_id, loc_name FROM locations) As lp ON lg.loc_id = lp.loc_id ) As f ) As fc; 到目前为止,我尝试修改示例的要素收集查询。但输出无效。

5
QGIS中的SQL控制台
我知道QGIS带有其现场计算器,这还不错。它还带有ftools,它允许对几何图形和属性进行若干操作。但是我们经常需要更多的控制权,而且我还没有在QGIS中看到任何方便的工具来执行此类操作(例如,您可以在其中进行空间查询时选择所需的字段或对其进行算术运算)。 基本上,我想知道SQL控制台(一种Mapinfo mapbasic窗口)是否在QGIS的开发路线上,如果没有,是否很难将其编码为插件。如果还存在,请让我知道,我已经错过了!;-)

3
使用PostGIS创建空间表
在PostGIS文档中,它说使用SQL创建空间表有两个步骤: 创建一个普通的非空间表。 使用OpenGIS“ AddGeometryColumn”功能将空间列添加到表中。 如果遵循这些示例,则将创建一个terrain_points像这样的表: CREATE TABLE terrain_points ( ogc_fid serial NOT NULL, elevation double precision, ); SELECT AddGeometryColumn('terrain_points', 'wkb_geometry', 3725, 'POINT', 3 ); 另外,如果我查看pgAdmin III中的现有表,似乎我可以像这样创建相同的表: CREATE TABLE terrain_points ( ogc_fid serial NOT NULL, wkb_geometry geometry, elevation double precision, CONSTRAINT terrain_points_pk PRIMARY KEY (ogc_fid), CONSTRAINT enforce_dims_wkb_geometry CHECK (st_ndims(wkb_geometry) = 3), …



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 

1
使用ogr2​​ogr通过属性选择特征?
经过一些处理后,我正在编写一个shapefile。但是,在最后一步中,我需要根据shapefile中的属性进行选择。 我正在外壳程序中使用该命令,目的是在工作时在Python脚本中使用它。 ogr2ogr -f "ESRI Shapefile" -select * where ID="1" outfile.shp infile.shp 我收到错误消息: FAILURE: Unable to open datasource `Downloads' with the following drivers. 我可能做错了什么?

3
使用PostGIS将MultiLinestring转换为Linestring?
我有一个多行字符串,并且想要将其转换为行字符串,以便使用某些仅适用于行字符串的功能。我使用ST_Dump()并收集了我的几何形状。如果将它们合并在一起,我仍然会得到多线串。我应该得到Npoints并将它们组合在一起,还是以某种简单的线串结尾?ST_LineMerge()在我的multilinestring上也不起作用,它返回相同的结果。 我的例子 MULTILINESTRING(( - 3.16420835153456 55.9269166007097,-3.164222 55.926918),( - 3.1642070167833 55.9269296196706,-3.16421351659546 55.9268662214904),( - 3.16421351659546 55.9268662214904,-3.16421636372824 55.9268384509897),( - 3.16421636372824 55.9268384509897,-3.16422182573761 55.9267851753802),( - 3.16422182573761 55.9267851753802,-3.16422870102352 55.926718114886 ),( - 3.16422870102352 55.926718114886,-3.16423309121073 55.926675293667),( - 3.16423309121073 55.926675293667,-3.16423565148822 55.9266503211093),( - 3.16423565148822 55.9266503211093,-3.16424103159897 55.9265978443265),( - 3.16424103159897 55.9265978443265,-3.16424680776317 55.9265415044985),( - 3.16424680776317 55.9265415044985,-3.16425267254583 55.9264843002995 ),(-3.16425267254583 55.9264843002995,-3.16425541048045 55.9264575949012),(-3.16425541048045 55.9264575949012,-3.16426111146586 55.9264019883556),(-3.16426111146586 55.9264019883556,-3.1642667032531 …
16 postgis  sql 

1
使用PostGIS识别拓扑关系
我正在尝试使用PostGIS执行基本的类型分析。我的目标是找到所有与其他多边形接触的多边形。为此,我认为ST_GetFaceEdges可以工作(参考)。我想检查数据库中的每个多边形,并列出所有与之接触的其他多边形。在下面的图像中,我希望结果表示两个多边形(即建筑物)接触一栋建筑物,而其他四个的结果表明它们接触0个多边形。 但是,我在理解该怎么做方面有些困难。当我尝试复制示例时,其中有一些我不理解的部分。 -- Returns the sequence, edge id -- , and geometry of the edges that bound face 1 -- If you just need geom and seq, can use ST_GetFaceGeometry SELECT t.seq, t.edge, geom FROM topology.ST_GetFaceEdges('tt',1) As t(seq,edge) INNER JOIN tt.edge AS e ON abs(t.edge) = e.edge_id; 我不确定topology是表,列还是函数的一部分的名称。我以为是桌子,但我不确定。 -- try …
16 postgis  sql  topology 

3
使用PostGIS将栅格与多边形相交-Artefact Error
我正在使用PostGIS2.0进行一些栅格/多边形相交。我很难理解应该使用哪种操作以及执行此操作最快的方法是什么。我的问题如下: 我有一个多边形和一个栅格 我想找到落在多边形内的所有像素,并获取像素值的总和 并且(已更新的问题):执行查询时,我正在获取原始栅格中不存在的一些像素的大量值 我难以理解应该使用ST_Intersects()还是ST_Intersection()。我也不知道对像素求和的最佳方法是什么。这是我尝试过的第一种方法(#1): SELECT r.rast FROM raster as r, polygon as p WHERE ST_Intersects(r.rast, p.geom) 这将返回一个rast值列表,我不确定该怎么做。我尝试使用计算汇总统计信息,ST_SummaryStats()但不确定这是否是多边形内所有像素的加权和。 SELECT (result).count, (result).sum FROM ( SELECT ST_SummaryStats(r.rast) As result FROM raster As r, polygon As p WHERE ST_Intersects(r.rast, p.geom) ) As tmp 我尝试过的另一种方法(#2)使用ST_Intersection(): SELECT (gv).geom, (gv).val FROM ( SELECT ST_Intersection(r.rast, p.geom) AS …

3
使用PostGIS连接相交线
我几乎不敢问这个问题,但是我似乎无法让它在我的一生中发挥作用。 我有一个路段,每个路段都有一个Road ID和一个路段type。 我想将所有的段连接在一起,将每个段连接Road ID成一个线串,但前提是它们相同type且相互接触(所有线都对齐)。 Road ID - Type 1 L 1 L 1 T 1 L
15 postgis  sql 

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.