标签: polygons

如何使用 R 在传单上绘制多边形?

我在尝试使用 R 在 Leaflet 上绘制 SpatialPolygonsDataFrame 时遇到了一个简单的问题。我的代码如下:

leaflet() %>%
    addProviderTiles("CartoDB.Positron") %>%
    setView(lng = -80.8858673, lat = 41.1450276, zoom = 5) %>%
    addPolygons(data = SPDF, weight = 2, color = ~colorQuantile("red", SPDF$id)(id))
Run Code Online (Sandbox Code Playgroud)

其中 SPDF 是我的 SpatialPolygonsDataFrame。

当我执行此代码时,它“没有绘制任何内容”,但只有底图。我一直在四处寻找,这个问题很相似,但没有这个问题。

为了绘制多边形,我一直在关注链接。

这个问题看起来很简单,但它已经消耗了我很多时间。期待建议。谢谢你的时间。

注意:SPDF 包含从 OSM 导出的数据,这意味着(多边形的)坐标没有小数点,因为它在 OSM 数据中。

r spatial polygons leaflet

3
推荐指数
1
解决办法
2101
查看次数

将 GeoDataFrame 多边形转换为 kml 文件

我有一个带有各种多边形和颜色的 geopandas GeoDataFrame,我用它来绘制气象数据(我在这里问的另一个问题):

        color   geometry
0   #fbfdd1 (POLYGON ((-97.12191717810094 32.569, -97.1194...
1   #f3fabf (POLYGON ((-97.12442748846019 32.569, -97.1219...
2   #ebf7b1 (POLYGON ((-97.12944810917861 32.569, -97.1269...
3   #daf0b2 (POLYGON ((-97.18969555780023 32.569, -97.1879...
4   #cbeab3 (POLYGON ((-97.18969555780023 32.5710632999095...
5   #afdfb6 (POLYGON ((-97.18467493708175 32.569, -97.1821...
6   #92d4b9 (POLYGON ((-97.17463369564484 32.5730575804109...
7   #74c9bc (POLYGON ((-97.17714400600408 32.5764063816167...
8   #5bbfc0 (POLYGON ((-97.17714400600408 32.5790959050363...
9   #40b5c3 (POLYGON ((-97.17463369564484 32.5814268890055...
10  #31a6c2 (POLYGON ((-97.17714400600408 32.5852716913413...
11  #2397c0 (POLYGON ((-97.17714400600408 32.5878055733984...
12  #1e83b9 (POLYGON ((-97.17714400600408 32.5895482376014...
13  #206eaf (POLYGON …
Run Code Online (Sandbox Code Playgroud)

kml polygons python-2.7 geopandas

3
推荐指数
2
解决办法
6119
查看次数

适用于多个多边形谷歌地图的界限

我正在尝试扩展几个多边形的地图边界,但似乎它只是扩展了循环中最后一个多边形的边界.我有什么错误的建议?

 function FitBounds(){
    for (var i=0; i < shapes2.length; i++){
        var paths = shapes2[i].getPaths();
        var bounds= new google.maps.LatLngBounds();
        paths.forEach(function(path){
           var ar = path.getArray();
           for(var i=0, l = ar.length; i <l; i++){
              bounds.extend(ar[i]);
           }
        })
    }
    map.fitBounds(bounds)
 }
Run Code Online (Sandbox Code Playgroud)

google-maps polygons google-maps-api-3

3
推荐指数
1
解决办法
2327
查看次数

ggplot2 - 如何用颜色填充嵌套多边形?

我在一个独特的SpatialPolygonsDataFrame. 我希望用它们来绘制它们,ggplot2并且它们都需要在地图中可见,即覆盖较大的多边形必须在背景中。

我发现我可以通过alpha = 0geom_polygon函数内使用来实现这一点,但是如何为每个多边形分配填充颜色?

这是我的代码示例,只有 2 个多边形:

library(ggplot2)
Run Code Online (Sandbox Code Playgroud)

读取合并两个 shapefile 的 csv 文件,然后使用fortifyfrom转换为 data.frame maptools

#read csv file shape_1_2.csv
shape_1_2 = read.csv('shape_1_2.csv', stringsAsFactors = FALSE)

#plot
ggplot() +
geom_polygon(data = shape_1_2, aes(x = long, y = lat, group = group), 
             colour = 'black', size = 1, linetype = 'solid', alpha = 0)
Run Code Online (Sandbox Code Playgroud)

和相对地图:

在此处输入图片说明

如何用颜色填充这两个多边形?

我试图添加fill='black'两者aesgeom_polygon但它不起作用。

谢谢


更新

很抱歉,但我意识到我的示例数据不包含嵌套多边形。

因此,根据 …

nested r polygons fill ggplot2

3
推荐指数
1
解决办法
2420
查看次数

在Geodjango/PostGIS中直接添加多边形

我正在搞乱Geodjango,我只是想在数据库中添加一个简单的多边形字段,然后在其上运行一个多边形点,以确保一切正常.

这是我在views.py中的代码:

    #adding a polygon
    pe = PolygonExample.objects.create(name="uk_polygon", poly="POLYGON((58.768200159239576, -12.12890625, 58.49369382056807 1.1865234375, 49.18170338770662 -12.9638671875, 50.2612538275847 5.537109375))" )
    #doing the point-in-polygon check
    result = PolygonExample.objects.filter(poly__contains='POINT(52.696361078274485 -0.87890625)') 
Run Code Online (Sandbox Code Playgroud)

这是我在models.py中的内容:

    class PolygonExample(models.Model):
      name = models.CharField(max_length=16, db_index=True)
      poly = models.PolygonField()
      objects = models.GeoManager()
Run Code Online (Sandbox Code Playgroud)

但是当我尝试添加多边形(PolygonExample.objects.create)时,我收到一个错误:"检查从GEOS C函数"GEOSWKTReader_read"返回的Geometry时遇到错误.

我添加多边形的代码是错误的吗?我不确定我是否理解如何直接插入纬度/经度坐标.

或者这是GEOS安装错误?

谢谢.

postgis polygons geodjango point-in-polygon

2
推荐指数
1
解决办法
4258
查看次数

有没有算法来检测我碰撞过的多边形的哪一边?

如果给出一个n多边形,一条长度线k(at x,y和angle a),是否有一个算法来检测我碰撞过的多边形的哪一边(如果有的话)?到目前为止,我已经尝试测试是否x,y在多边形之外,然后遍历多边形的每个边缘,计算到每个端点的距离.这是一个JS小提琴,展示了我创造的世界.

这是JavaScript(HTML和CSS不值得复制):

var eventLoop,
    maxVelocity = 10,
    agility = 5,
    baseLength = 5,
    degree = ((2*Math.PI)/360),
    world = document.getElementById('world'),
    context = world.getContext("2d"),
    boundry = [[180, 120],[240, 60],[360, 40],[420, 120],[360, 220],[350, 240],[360, 265],[470,360],[450,480],[360,540],[240,550],[140,480],[120,470],[100,360],[120,300],[220,240],[240,220]],
    camera = {
        location: {
            x:300,
            y:90
        },
        angle: 0,
        velocity: 0
    },
    engine = {
        drawWorld: function(shape, context) {
            var point,
                index,
                size = shape.length;

            context.clearRect(0, 0, world.width, world.height);
            context.beginPath();
            for(index = 0; index < …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm collision-detection polygons computational-geometry

2
推荐指数
1
解决办法
408
查看次数

如何计算任意三角形与正方形的交点面积?

所以,今天我一直在努力解决一个坦率的现在真气的问题.

给定平面上三角形的一组顶点(仅3个点,6个自由参数),我需要计算该三角形与{0,0}和{1,1}定义的单位平方的交点区域.(我之所以选择这个,是因为2D中的任何方形都可以转换为此方,同一个转换可以移动3个顶点).

所以,现在问题简化为只有6个参数,3个点......我认为这个问题很短,我愿意编写完整的解决方案/找到完整的解决方案.

(如果可能的话,我想在GPU上运行超过200万个三角形,每个<0.5秒.至于需要简化/没有数据结构/库)

就我对解决方案的尝试而言,我已经...列出了我想出的方法,其中没有一个看起来很快或者......特定于好的情况(太笼统).

选项1:找到封闭的多边形,它可以是从三角形到6格的任何东西.通过在我发现的O(n)时间算法中使用一些凸多边形的交叉来做到这一点.然后我会按CW或CCw顺序对这些交点(新顶点,最多7个O(n log n))进行排序,这样我就可以在点上运行一个简单的区域算法(基于格林函数)( O(n)再次).对于与另一个m-gon相交的任意凸n-gon,这是我能提供的最快速度.但是......我的问题绝对不是那么复杂,它是一个特例,所以它应该有一个更好的解决方案......

选项2:因为我知道它是一个三角形和单位正方形,所以我可以用更强力的方式找到交叉点列表(而不是使用一些算法......坦率地说实施起来有点令人沮丧,如上所列)

只有19分要检查.4个点是三角形内的正方形角.正方形内有三角三角形.然后对于三角形的每条线,每条线将与正方形相交4条线(例如,y = 0,y = 1,x = 0,x = 1条线).那是另外12点.所以,12 + 3 + 4 = 19点检查.一旦我有了这个交叉点,最多6个,最少3个点,我可以跟进我能想到的两种方法中的一种.

2a:通过增加x值对它们进行排序,然后简单地将形状分解为其子三角形/ 4-gon形状,每个形状都有一个基于限制顶部和底部线的简单公式.总结一下这些地区.

或2b:再以某种循环方式对交点进行排序,然后根据绿色函数计算区域.

不幸的是,就我所知,这仍然是最复杂的.为了找到交点,我可以开始分解所有的情况,因为我知道它的正方形只有0和1,这使得数学删除了一些条款..但它不一定简单.

选项3:根据各种条件开始分离问题.例如.正方形内的0,1,2或3个三角形点.然后针对每种情况,遍历所有可能数量的交叉点,然后针对每个多边形形状的情况,唯一地记下区域解决方案.

选项4:一些具有重载步骤功能的配方.这是我最想要的那个,我怀疑它会有点......很大,但也许我很乐观这是可能的,并且一旦我有了公式,这将是计算最快的运行时间.

---总的来说,我知道可以使用一些高级库(例如限幅器)来解决它.我还意识到,在使用各种数据结构(链表,然后对其进行排序)时,编写通用解决方案并不是那么难.如果我只需要这样做几次,所有这些情况都可以.但是,因为我需要将它作为一个图像处理步骤运行,每张图像大约> 9*1024*1024次,我正在拍摄图像...让我说1 fps(技术上我会想要推动这个速度尽可能快地上升,但是下限是1秒来计算这些三角形交叉区域问题中的900万个).这在CPU上可能是不可能的,这很好,我可能最终会在Cuda中实现它,但我确实想要在这个问题上推动速度限制.

编辑:所以,我最终选择了2b.由于可能只有19个交叉点,其中最多6个将定义形状,我首先找到3到6个顶点.然后我按循环(CCW)顺序对它们进行排序.然后我通过计算该多边形的面积来找到该区域.

这是我写的测试代码(这是为了Igor,但应该是可读的伪代码)不幸的是它有点长啰嗦,但是......我认为除了我糟糕的排序算法(不应该超过20掉期) ,所以编写更好的排序没有那么多开销)...除了排序之外,我认为我不能让它更快.尽管如此,我对选择此选项时可能有的任何建议或疏忽持开放态度.

function calculateAreaUnitSquare(xPos, yPos)
wave xPos
wave yPos

// First, make array of destination. Only 7 possible results at most for this geometry. 
Make/o/N=(7) outputVertexX  = NaN
Make/o/N=(7) outputVertexY  = NaN

variable pointsfound = 0

// Check 4 corners of square
// Do this …
Run Code Online (Sandbox Code Playgroud)

geometry polygons computational-geometry

2
推荐指数
1
解决办法
2200
查看次数

pcl :: io没有成员savePolygonFile

我不知道pcl 1.6中的函数savePolygonFileSTL在哪里.我必须包含哪个文件?

这里说它是它的一部分

#include <pcl/pcl_config.h>
#include <boost/cstdint.hpp>
#include <cstdlib>
#include <iostream>
#include <stdarg.h>
#include <stdio.h>
#include <math.h>
Run Code Online (Sandbox Code Playgroud)

无论如何VS2010没有找到它,并且还有手动搜索我没有在所有pcl 1.6文件夹中找到该功能的定义.savePolygonFile既不存在也不相似.这怎么可能?还有一些我不知道的事情?请帮我.

非常感谢

visual-studio-2010 polygons point-clouds point-cloud-library stl-format

2
推荐指数
1
解决办法
1146
查看次数

旋转2D多边形而不更改其位置

我有这个代码:

class Vector2D(object):
    def __init__(self, x=0.0, y=0.0):
        self.x, self.y = x, y

    def rotate(self, angle):
        angle = math.radians(angle)
        sin = math.sin(angle)
        cos = math.cos(angle)
        x = self.x
        y = self.y
        self.x = x * cos - y * sin
        self.y = x * sin + y * cos

    def __repr__(self):
        return '<Vector2D x={0}, y={1}>'.format(self.x, self.y)

class Polygon(object):
    def __init__(self, points):
        self.points = [Vector2D(*point) for point in points]

    def rotate(self, angle):
        for point in self.points:
            point.rotate(angle)

    def center(self):
        totalX = totalY …
Run Code Online (Sandbox Code Playgroud)

python polygons

2
推荐指数
1
解决办法
1435
查看次数

将 SQL Server Geography 转换为 PNG 图像

我们有一个 API,它将 MS SQL 地理类型转换为众所周知的文本,并将其发送到前端,然后将 WKT 发送到 OpenLayer 地图,后者呈现画布(边界、区域等)。

我正在寻找一种方法来减少客户端的有效负载,并将多边形、multypoligons 和地图一般转换为后端的 png。

我尝试的是将画布转换为 base64,并将其另存为 PNG。效果很好,但我需要一个完整的后端解决方案。

我尝试使用 SharpMap,但它已经很旧了,它导致了我的依赖性问题,而且我没有设法让它工作。

我找到了一个测试 SHP 文件,并尝试将其渲染到 Windows 窗体中的 PictureBox 进行测试,但我得到的只是一个空的白框。

SharpMap.Map myMap = new SharpMap.Map(new Size(600, 300));
myMap.BackColor = Color.White;
var shapeFileProvider = new SharpMap.Data.Providers.ShapeFile(@"C:\Users\test\Downloads\FRA_adm\FRA_adm1.shp", true);

SharpMap.Layers.VectorLayer myLayer = new SharpMap.Layers.VectorLayer("World Countries");
myMap.Layers.Add(myLayer);
myMap.ZoomToExtents();
myLayer.DataSource = shapeFileProvider;
pictureBox1.Image = myMap.GetMap();
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何想法?

编辑:我什至尝试过geoserver,但它看起来不支持空间地理,而只支持几何。

我需要找到一种方法将边界、区域、国家/地区转换为 c# 后端中的图像。

编辑 2:您正在使用 SHP 文件进行测试,但我真正想要的是从 Sql Server Geography 类型呈现它。

c# geography polygons openlayers sqlgeography

2
推荐指数
1
解决办法
1095
查看次数