Как создать многоугольник в KML, который расположен в воздухе? - PullRequest
11 голосов
/ 04 февраля 2010

Мне нужно иметь возможность поместить объект многоугольника с заданной высотой в KML, который будет расположен над землей.Я рассчитываю отображать информацию о воздушном пространстве в KML, и каждое воздушное пространство имеет низкую и большую высоту.

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

Спасибо за помощь

Ответы [ 2 ]

6 голосов
/ 16 февраля 2010

У вас есть два варианта, вы можете создать модель воздушного пространства в виде коллады или серию многоугольников, определяющих каждую грань,

Вертикально ориентированные полигоны могут быть определены, обратите внимание на направление вашего (по часовой стрелке или против часовой стрелки), так как это повлияет на стиль, просмотр полигона снизу делает его немного темнее

для простой прямоугольной формы вам понадобится 6 граней

следующий kml является модифицированной версией примера пятиугольника с одной из граней вертикали, остальные 4 грани вертикали должны быть завершены, но вы поймете идею.

    <?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
    <name>pm1.kml</name>
    <Style id="poly">
        <LineStyle>
            <color>f0ffed42</color>
        </LineStyle>
        <PolyStyle>
            <color>e8ff9257</color>
        </PolyStyle>
    </Style>



<Placemark>
    <styleUrl>#poly</styleUrl>
        <Polygon>
            <altitudeMode>relativeToGround</altitudeMode>
            <outerBoundaryIs>
                <LinearRing>
                    <coordinates>
-77.05844056290393,38.86996206506943,500 -77.05552622493516,38.868757801256,500 
-77.05315536854791,38.87053267794386,500 -77.05465973756702,38.87291016281703,500 -77.05788457660967,38.87253259892824,500 -77.05844056290393,38.86996206506943,500 </coordinates>
                </LinearRing>
            </outerBoundaryIs>
        </Polygon>
</Placemark>
<Placemark>
    <styleUrl>#poly</styleUrl>
        <Polygon>
            <altitudeMode>relativeToGround</altitudeMode>
            <outerBoundaryIs>
                <LinearRing>
                    <coordinates>
-77.05844056290393,38.86996206506943,400 -77.05552622493516,38.868757801256,400 
-77.05315536854791,38.87053267794386,400 -77.05465973756702,38.87291016281703,400 -77.05788457660967,38.87253259892824,400 -77.05844056290393,38.86996206506943,400 </coordinates>
                </LinearRing>
            </outerBoundaryIs>
        </Polygon>
</Placemark>

<Placemark>
    <styleUrl>#poly</styleUrl>
        <Polygon>
            <altitudeMode>relativeToGround</altitudeMode>
            <outerBoundaryIs>
                <LinearRing>
                    <coordinates>
 -77.05844056290393,38.86996206506943,500 -77.05844056290393,38.86996206506943,400 -77.05552622493516,38.868757801256,400  -77.05552622493516,38.868757801256,500  -77.05844056290393,38.86996206506943,500
</coordinates>
                </LinearRing>
            </outerBoundaryIs>
        </Polygon>
</Placemark>

</Document>
</kml>
1 голос
/ 06 февраля 2010

Похоже, вы создаете 2-мерные полигоны, а не 3D-полигоны? Вы можете создать обычный трехмерный многоугольник:

http://code.google.com/apis/kml/documentation/kml_tut.html#polygons

Затем проверьте тег altitudemode в KML, чтобы «плавать» над поверхностью:

http://code.google.com/apis/kml/documentation/altitudemode.html

...