Questions tagged «geometry»

(1)抽象几何;(2)将地理数据存储在投影坐标中;(3)矢量特征的通用ESRI术语;“几何”对象的类。


2
计算球形多边形质心
我想要一种通用方法来计算球体上多边形的质心。 到目前为止,最好的在线参考似乎是: Jeff Jenness的图形和形状工具。 此处描述的方法建议将多边形分解为多个球形三角形,并计算球形三角形质心的平均值,并按球形三角形面积加权。 我知道有几种定义球形多边形质心的方法,但是我正在寻找类似于以下对点和折线的定义的方法: 点:表示点的笛卡尔向量的算术平均值。 折线:笛卡尔向量的加权平均值,代表每个线段的中点,由每个线段的(球形)长度加权。 将多边形质心定义为按面积加权的三角分解的加权平均值,似乎是一个合理的延续。 我的问题是,无论所使用的三角形分解如何,上述参考文献中的方法是否都将起作用。特别地,它提到相对于任意点甚至在多边形外部都分解为三角形,使得某些三角形将具有负面积,这些负面积会带来负的权重。 相关:如何找到对象的几何中心?

4
使用ArcPy从点对坐标创建线?
我有一些点对坐标(起点和终点),必须将它们转换为线。到现在为止,我曾经在这两个坐标的追加pippo.Point(),一个pippo.CalculateGeometry()定义每个PIONT的几何形状,并pippo.append(defined geometry)找出一对点,然后PointsToLine获得我行。对于数百行而言,这是相当昂贵的时间。 有更短的方法吗? 例如,将每条线的起点和终点放置在单个表的不同字段中,然后直接导入线而无需传递点几何。

5
测量曲线段的直线度(以折线表示)
我正在研究一种自动的高程轮廓标注算法,在确定标签位置时要考虑的因素之一是轮廓的特定段的“直度”。它越直,就越有可能将标签用于该线段。 每个轮廓由一条折线表示(但点彼此靠近,看起来像肉眼的曲线)。然后,我有一个固定的长度(标签的宽度),例如100像素。如果我随机(或以其他方式)选择宽度为100像素的轮廓线段,我希望能够获得其直线度的数值定量值(对于完全笔直的轮廓线段为零,对于非直线形轮廓线段则大于零。直线段,并且该值会随着弯曲度的增加而增加)。 我一直在寻找答案,但是找不到任何真正有用的东西。我将不胜感激任何指针。






1
配置Geoserver以使用特定的postgis几何列作为默认列
我有一个PostGIS表,其中包含两个几何列,两个均为多边形,一个为SRID 4326,另一个为3857。在Geoserver中发布表时,我意识到Geoserver默认使用列列表中的第一个几何列,但我想知道是否可以将Geoserver配置为使用特定的几何列? 我不是在谈论将SLD配置为使用特定的几何列进行渲染,即: <se:PolygonSymbolizer> <se:Geometry> <ogc:PropertyName>geom3857</ogc:PropertyName> </se:Geometry> … </se:PolygonSymbolizer> 我说的是让Geoserver使用特定的几何列作为本机SRID和默认投影。

6
使用ArcPy或ModelBuilder移动/偏移点位置?
我有一些具有文本注释功能的非地理参考CAD图层(请参阅此问题)。我创建了一个模型,将文本转换为点,但是将注释转换为Point要素类后,我看到CAD文本锚点与CAD文本的中心(点所在的位置)不一致。 因此,我想以编程方式(使用ArcPy或ModelBuilder )使用将提供的X,Y值相对于其当前位置(delta x,y)[移动]特征。 这将使我可以将GIS点移回它们所属的位置,而不是移到偏移的CAD锚点。 如何完成这项任务? @PolyGeo 使用SHAPE @ XY IN 10.1 提供了一个很好的答案,但目前我正在运行10.0。有10.0个想法吗?

1
使用PostGIS从现有表格中的经度/纬度坐标制作POINT?
我想使用现有表格的经度和纬度列创建一个POINT。这是ST_MakePoint文档的链接。 这是我的桌子: CREATE TABLE sysinst.bio ( oid INTEGER PRIMARY KEY, longitude FLOAT, latitude FLOAT, geom GEOMETRY(POINT, 26913) ); 添加几何列: SELECT AddGeometryColumn ('sysinst', 'bio', 'geom', 26913, 'POINT', 2); 这是我的查询: UPDATE sysinst.bio SET geom = ST_SetSRID(ST_MakePoint(longitude, latitude), 26913); 尽管在QGIS中查看POINTS时错误绘制了点,但没有返回错误。 对于(-97.5959, 21.1922),我收到(-109.4896, 0.0002) 有什么建议么? 如果有更简单的方法,我愿意更有效地执行此操作。

3
按百分比增长PostGIS几何
我正在寻找一种在PostGIS几何周围添加缓冲区的方法,但是缓冲区的大小应取决于几何的大小。也就是说,我希望每个几何图形都扩大5%。 我的想法是我正在寻找相交的几何,但是我想考虑的每个几何可能有多达5%的误差。 有人知道最好的方法吗? 该数据库的行数为一百万行,因此我希望它的运行速度相当快。

4
是否有一个标准化的或“最常用的”虚拟Z值?
创建和导入2D和3D数据时,我屡次遇到我的坐标集没有Z值的情况,即Z坐标的值似乎超出范围(例如-99,-9999,-inf或类似值) ),或者我需要创建一个虚拟 Z坐标。 我知道我的问题的答案是: “只要使用您认为超出范围的值即可。” 但是这个答案被我搁置了,我想知道GIS社区对于虚拟 Z坐标是否具有标准化或最常用的值?

2
使用ogr和Python在Polygon中指向(线串)
我目前正在一个项目中,我需要根据在shapefile中找到的几何特征来构建拓扑网络。到目前为止,使用Ben Reilly的开源项目,我已经设法将线串转换为networkx边缘,并检测到封闭特征(将其他线串说成)并将其添加到最近的点,以便我可以运行最短路径算法。 但这对于一个shapefile很好。但是,我现在需要将来自不同shapefile的要素连接到一个大的networkx图形中。因此,例如,如果某个点在多边形内,则将其连接(通过连接,我的意思是添加一个networkx边-add_edge(g.GetPoint(1),g.GetPoint(2)),并在下一个shapefile中将该点也位于共享相似属性(例如ID)的多边形内,请注意,不同shps中的多边形仅共享相同的ID,而不共享坐标,而位于多边形内的点也不共享相同的坐标。 我对这个问题的解决方案是识别位于多边形中的点,将其存储,在下一个shapefile中找到具有相同ID的多边形中的点,然后在它们之间添加networkx边。 如何查找点是否位于多边形内?嗯,有一个众所周知的算法:RayCasting算法可以做到这一点。不过,这实际上是我遇到的问题,因为要实现算法,我需要多边形的坐标,而且即使浏览了OGR的Geometry 文档也不知道如何立即访问它们。因此,我要问的问题是如何访问多边形点或坐标,或者是否有更简单的方法来检测点是否落在多边形内?在osgeo.ogr库中使用python,我编写了以下代码: if g.GetGeometryType() == 3: #polygon c = g.GetDimension() x = g.GetPointCount() y = g.GetY() z = g.GetZ() 查看图片以更好地了解我的问题。 [编辑] 到目前为止,我已经尝试将所有多边形对象存储在列表中,然后再与之比较线串的第一和最后一点。但是Paolo的示例与使用“点对象”引用和“多边形对象”引用有关,这与线对象引用不兼容,因为不是整个线都在多边形内,而是其线串的第一个或最后一个点。 [EDIT3] 从线串的第一个点和最后一个点的坐标创建一个新的Geometry点对象,然后使用该对象与列表中保存的多边形几何对象进行比较似乎很好: for findex in xrange(lyr.GetFeatureCount()): f = lyr.GetFeature(findex) flddata = getfieldinfo(lyr,f,fields) g = f.geometry() if g.GetGeometryType() == 2: for j in xrange(g.GetPointCount()): if …

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.