仅使用 x、y 坐标和形状区域 (2D) 检查形状是否在另一个形状的边界内
Check if a shape is within the bounds of another shape using only x,y coords and shape area (2D)
所以我有一个 XML 数据库,里面装满了世界上不同岛屿和湖泊的数据,我想 select 所有至少有一个岛屿的湖泊。问题是我所掌握的关于每一个的唯一相关数据是它们的经度、纬度和它们的总面积。
岛屿XML示例:
<island id="island-Svalbard" country="SVAX" sea="sea-ArcticOcean sea-Greenlandsea sea-NorwegianSea sea-BarentsSea">
<name>Svalbard</name>
<islands>Svalbard</islands>
<area>39044</area>
<latitude>78.9</latitude>
<longitude>18.2</longitude>
<elevation>1713</elevation>
</island>
湖XML示例:
<lake id="lake-LagunaCarbon" country="RA" type="saline">
<name>Laguna del Carbón</name>
<located country="RA" province="prov-Argentina-20"/>
<area>9</area>
<latitude>-49.58</latitude>
<longitude>-68.35</longitude>
<elevation>-105</elevation>
<depth>0</depth>
</lake>
那么如何仅使用此信息来检查岛屿是否在湖泊范围内?有可能吗?
当前(未完成)Xquery:
let $doc := doc("mondial.xml")/mondial
let $lakes := $doc/lake
let $islands := $doc/island
let $lakesWithIslands := (
for $l in $lakes
let $lLong := $l/data(longitude)
let $lLat := $l/data(latitude)
let $lArea := $l/data(area)
for $i in $islands
let $iLong := $i/data(longitude)
let $iLat := $i/data(latitude)
let $iArea := $i/data(area)
where (something)
return $l
)
return $lakesWithIslands
感谢任何帮助。
谢谢!
事实证明,在 island 元素中实际上有一个 @lake 属性,我可以用它来找出一个岛在哪个湖中,然后用它来找出哪些湖中有岛屿。 @LeoWörteler 在评论中指出了这一点。所以我的问题实际上得到了完全不同的解决方案。
所以我有一个 XML 数据库,里面装满了世界上不同岛屿和湖泊的数据,我想 select 所有至少有一个岛屿的湖泊。问题是我所掌握的关于每一个的唯一相关数据是它们的经度、纬度和它们的总面积。
岛屿XML示例:
<island id="island-Svalbard" country="SVAX" sea="sea-ArcticOcean sea-Greenlandsea sea-NorwegianSea sea-BarentsSea">
<name>Svalbard</name>
<islands>Svalbard</islands>
<area>39044</area>
<latitude>78.9</latitude>
<longitude>18.2</longitude>
<elevation>1713</elevation>
</island>
湖XML示例:
<lake id="lake-LagunaCarbon" country="RA" type="saline">
<name>Laguna del Carbón</name>
<located country="RA" province="prov-Argentina-20"/>
<area>9</area>
<latitude>-49.58</latitude>
<longitude>-68.35</longitude>
<elevation>-105</elevation>
<depth>0</depth>
</lake>
那么如何仅使用此信息来检查岛屿是否在湖泊范围内?有可能吗?
当前(未完成)Xquery:
let $doc := doc("mondial.xml")/mondial
let $lakes := $doc/lake
let $islands := $doc/island
let $lakesWithIslands := (
for $l in $lakes
let $lLong := $l/data(longitude)
let $lLat := $l/data(latitude)
let $lArea := $l/data(area)
for $i in $islands
let $iLong := $i/data(longitude)
let $iLat := $i/data(latitude)
let $iArea := $i/data(area)
where (something)
return $l
)
return $lakesWithIslands
感谢任何帮助。 谢谢!
事实证明,在 island 元素中实际上有一个 @lake 属性,我可以用它来找出一个岛在哪个湖中,然后用它来找出哪些湖中有岛屿。 @LeoWörteler 在评论中指出了这一点。所以我的问题实际上得到了完全不同的解决方案。