首页 / 知识

关于算法:如何将一组多边形转换为位图

2023-04-15 02:32:00

关于算法:如何将一组多边形转换为位图

How do I convert a set of polygons into a bitmap

如何获取一组包含任意值的多边形,并创建一个对应的位图,其中每个像素都包含该位置处的多边形的值?

为了将问题放到上下文中,我的多边形包含有关多边形中每平方公里平均人数的信息。 我需要创建一个栅格/位图,其中包含代表200米仓中人口的像素。

过去我做过类似的事情,我使用多边形来创建蒙版,方法是将其绘制为位图并填充值,然后将位图转换为可操纵的数组。 我敢肯定有更好的方法可以做到这一点!

我根据要求进一步澄清了这个问题。

  • 有多个多边形,每个多边形是一组向量
  • 每个多边形都有一个唯一值
  • 多边形不重叠
  • 谢谢

    缺口


    这是一个有趣的项目。这是我要做的,假设多边形是凸的:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     have a NY * 2 array of x positions: int x[NY][2]
    foreach polygon
      clear the array to -1
      for each edge line
        foreach horizontal raster line iy intersecting the line
          generate ix, the x position where the raster intersects the line
          if x[iy][0] == -1, set it to ix, else set x[iy][1] to ix
        end foreach iy
      end foreach edge
      foreach iy
        fill the pixels between x[iy][0] and x[iy][1] with the polygons label
      end foreach iy
    end foreach polygon

    这比听起来要棘手得多,因为您需要精通纪律才能将栅格坐标视为不是要标记的像素,而是像素之间的不可见线。否则,您会因边界问题而感到困惑。

    对此的一个很好的测试是,如果您有一个面积为零的多边形,例如它由从点A到点B再回到点A的边缘组成,则它不应点亮任何像素。另一个测试是如果您的平行四边形的高度为2个单位,并且其上边缘和下边缘为2个单位宽,则它应恰好照亮4个像素。

    如果多边形不是凸的,则有些不同。无论边缘与栅格线的交叉之处如何,都将所有像素从那里切换到任意选择的X坐标,例如"屏幕"的左边缘。完成所有边缘后,仅内部像素将被切换奇数次。


    这可能不是您所需要的,但是如果您要绘制多边形(或以多边形为基础读取多边形图像的像素),则一种解决方案是滚动自己的多边形填充工具。坦率地说,这是很多乐趣,而且真的很容易学习。

    但是你的问题对我来说不是很清楚。你能给个更好的描述吗?

    • 您的任意多边形集是实际图像还是矢量(即点列表)点或???
    • 每个多边形都有一个值,还是每个多边形都有一个要绘制的值数组?
    • 因此,每个多边形都有一个相关的总体值数组,您想使用它们来对多边形进行纹理处理?

    -亚当


    您正在使用什么GIS软件? ArcGIS在ArcGIS 9.2或更高版本中提供了"多边形到栅格"工具,该工具可编写为PolygonToRaster_conversion函数。

    1
    PolygonToRaster_conversion (in_features, value_field, out_raster_dataset, cell_assignment, priority_field, cellsize)

    @尼克R

    I was originally using ArcGIS 9.2, but that doesn't work well with C# and 64 bit, so I am now using GDAL (http://www.gdal.org).

    gdal_rasterize确实不满足您的要求吗?


    ImageMagick可以从svg转换为png,也许您可??以看一下代码,或者干脆创建svg并使用IM进行转换?地做到这一点。


    位图算法像素位置

    最新内容

    相关内容

    猜你喜欢