【问题标题】:XSL transformation for inner points of polygon多边形内点的 XSL 变换
【发布时间】:2018-02-12 17:23:56
【问题描述】:

我有一个 xml 文件,它保留在地图中设计的多边形的边缘,如下所示:

<polygons>
    <polygon>
        <point x="23.40637" y="38.20176"/>
        <point x="23.45169" y="38.11011"/>
        <point x="23.43383" y="38.20284"/>
        <point x="23.52722" y="38.27285"/>
        <point x="23.41323" y="38.25023"/>
        <point x="23.40774" y="38.20068"/>
        <point x="23.41598" y="38.18020"/>
    </polygon>
</polygons>

我的问题是我需要在一个新的 xml 文件中获取多边形的多个内部点。 我试图在 Javascript 中实现一些东西来在多边形内生成随机点,但是当我试图将它包含在 xsl 中时它变成了一场灾难。 实际上我试图做的是向一个函数提供一个包含我的初始 x,y 点的对象列表,并从多边形内部返回一个随机 x 和 y。

有人知道怎么做吗?

注意:我不关心重叠的多边形

【问题讨论】:

  • 你需要Convex hull吗?
  • 您正在使用什么 XSLT 处理器,您是否仅限于在 XSLT 中实现它?
  • 当你说“随机”时,它必须有多随机?例如,您是否要求多边形内的所有点都有相同的机会被选中?
  • “它变成了一场灾难”。我们通过研究症状来解决此站点上的问题。如果你不告诉我们这场灾难是什么样的,我们就无法告诉你为什么会发生。
  • 我使用标准的 XSLT1 处理器。

标签: javascript xml xslt


【解决方案1】:

快速搜索会发现许多用于在多边形内部生成“随机”点的算法,例如:

https://gis.stackexchange.com/questions/6412/generate-points-that-lie-inside-polygon

https://codereview.stackexchange.com/questions/69833/generate-sample-coordinates-inside-a-polygon

How to get a random point on the interior of an irregular polygon?

这些答案的唯一问题是它们使用了错误的编程语言。但是,将它们翻译成 XSLT 看起来并不是特别困难。其中一些依赖于随机数生成器:直到 XSLT 3.0 (fn:random-number-generator) 才能在标准函数库中获得它,但是一些 XSLT 1.0 和 XSLT 2.0 处理器提供 exslt:random 扩展函数EXSLT 库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    • 2015-02-19
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多