Программно создающие векторные стрелки в KML

У кого-либо есть какие-либо практические примеры программно рисования значков как векторы в KML? А именно, у меня есть данные с величиной и азимутом в данных координатах, и я хотел бы иметь значки (или другой графический элемент) сгенерированный на основе этих значений.

Некоторые мысли о том, как я мог бы приблизиться к нему:

  1. Каталог образов (грубая сила путь): Сделайте директора изображения 360 различных файлов изображений (вероятно, пакет поворачивает единственное изображение), каждое указание в cooresponding азимуте. Я видел вещи как "Excel к KML", но ищу код, который я могу использовать в рамках программы, а не веб-утилиты. Проблема: Стрелка не содержит контекст величины, так, чтобы должна была бы быть маркировка. Я динамично удлинил бы стрелку.

  2. Создание строки в KML: Возможно, создайте формулу, которая создает строку с источником в координатных точках с длиной строки, пропорциональной magnitute и повернутой согласно азимуту. Затем было бы еще две строки, возможно, приблизительно 30 градусов, расширяющихся от конца предыдущей строки для создания наконечника стрелки. Проблемы: Не отдельный значок изображения, таким образом, не уверенный, как это работало бы в KML. Также не уверенный, как легкий это должно было бы генерировать этот алгоритм.

  3. Отдельное формирование изображения: Возможно, создайте файл PHP, который использует imagemagick или что-то подобное, чтобы динамично генерировать .png файл в похожем методе для вышеупомянутого и затем связаться со значком с помощью URI "domain.tld/imagegen.php? magnitude=magvalue&azimuth=azmvalue". Проблема: Все еще имейте проблему фактической записи алгоритма для формирования изображения.

Так, вопрос: кто-либо еще предложил решения для программного вектора (а не просто стрелка) поколение?

6
задан Jason S 27 July 2009 в 20:28
поделиться

1 ответ

Я видел, как это было сделано (в Фортране!) С вариантом варианта 1 , но с использованием только одного изображения стрелки и установка размера и направления с помощью элемента KML IconStyle.

Уловка состоит в том, чтобы сначала преобразовать ваши векторы из любого формата, в который они у вас есть, в заголовки (в градусах по часовой стрелке с севера, то есть между 0 и 360 градусами), а длины векторов в масштабный коэффициент (число с плавающей запятой в десятичной системе счисления). Вам также необходимо дать каждому вектору уникальное имя. Затем для каждого вектора создайте фрагмент KML, скажем, для вектора «my-vector-1» с масштабом 1,8 и заголовком 90,0 (т.е. восток):

<IconStyle id="my-vector-1">
    <scale>1.8</scale>
    <heading>90.0</heading>
    <Icon>
        <href>/path/to/arrow.png</href>
    </Icon> 
</IconStyle>

, а затем поместите вектор на карту со ссылкой на IconStyle. :

<Placemark>
  <styleUrl>#my-vector-1</styleUrl>
  <Point>
     <coordinates>-10.5,10.8</coordinates>
  </Point>

оберните все это в:

<kml><Document> ... </Document></kml> 

, и вы должны отобразить набор векторных изображений. Правильный масштабный коэффициент может потребовать некоторых экспериментов (и будет зависеть от размера вашего изображения стрелки), но этот подход должен быть намного быстрее, чем загрузка большого количества различных изображений. Если это поможет, я, наверное, мог бы откопать Фортран, чтобы сделать это ...

3
ответ дан 17 December 2019 в 18:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: