Проверьте, находится ли фигура в границах другой фигуры, используя только координаты x, y и область фигуры (2D) - PullRequest
0 голосов
/ 02 мая 2018

Итак, у меня есть база данных XML, заполненная данными о разных островах и озерах мира, и я хочу выбрать все озера, в которых есть хотя бы один остров. Проблема в том, что у меня есть только соответствующие данные о долготе, широте и общей площади.

Пример 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

Любая помощь приветствуется. Спасибо!

1 Ответ

0 голосов
/ 02 мая 2018

Оказывается, что на самом деле в элементах острова был атрибут @lake, который я мог использовать, чтобы выяснить, в каком озере был остров, а затем использовать его, чтобы выяснить, в каких озерах есть острова. На это указал @ LeoWörteler в комментариях. Поэтому моя проблема получила совершенно другое решение.

...