DrawOrder를 사용한 LineString의 복잡한 스타일 지정

Josh Livni, Google Geo API팀
2010년 12월

목표

이 튜토리얼에서는 Google 어스 6.0에 도입된 몇 가지 새로운 KML 요소와 이를 사용하여 LineStyle의 복잡한 지도 제작을 만드는 방법을 소개합니다. <gx:physicalWidth>, <gx:outerColor>, <gx:outerWidth>, <gx:drawOrder>에 대해 알아봅니다.

소개

Google 어스 6.0이 출시되기 전에는 LineString의 복잡한 지도 제작 스타일을 정의하는 기능이 제한되었습니다. 예를 들어 LineString의 중앙이 가장자리와 다른 색상인 도로 스타일을 만들려면 너비가 다른 두 개의 별도 LineString을 그려야 하며, 이 경우에도 그리는 순서를 보장할 수 없습니다.

다음 예에서는 도로를 만드는 과정을 안내합니다. 먼저 도로의 스타일이 단순해집니다. 그런 다음 인도를 추가합니다. 마지막으로 고속도로 육교를 추가합니다.

기본 도로

관심을 끄는 첫 번째 요소는 <gx:physicalWidth>입니다. 이를 사용하면 LineString의 너비를 픽셀이 아닌 미터로 설정할 수 있습니다. 도로 예시의 경우 최종 사용자가 도로를 보는 고도와 관계없이 기본 이미지와 일치하도록 도로의 너비를 설정할 수 있습니다. 고도가 높아지면 도로의 픽셀이 줄어들어 가까이 확대했을 때만 LineString이 표시되는 효과가 나타납니다. 이 옵션은 멀리서 작은 도로를 강조하고 싶지 않거나 지도 제작이 항상 위성 이미지와 일치하도록 하려는 경우에 유용할 수 있습니다.

<?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>Road Styling</name>
  <Style id="street">
    <LineStyle>
      <color>ff235523</color>
      <gx:physicalWidth>12</gx:physicalWidth>
    </LineStyle>
  </Style>
  <Placemark>
    <styleUrl>#street</styleUrl>
    <LineString>
      <coordinates>
      -122.2442883478408,37.4347536724074,0
      -122.2417741446485,37.43594997501623,0
      -122.2414951359056,37.43611878445952,0
      </coordinates>
    </LineString>
  </Placemark>
</Document>
</kml>

Google 어스에서 카메라 고도를 변경할 때 항상 기본 이미지의 너비와 얼마나 일치하는지 확인하세요.

보도 추가

이제 도로 가장자리에 밝은 녹색을 추가하여 인도를 나타냄으로써 <gx:outerColor><gx:outerWidth> 요소를 추가할 수 있습니다. 도로의 총 픽셀 중 25% 를 밝은 회색으로 설정합니다.

<?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>Road Styling</name>
  <Style id="street_sidewalk">
    <LineStyle>
      <color>ff235523</color>
      <gx:physicalWidth>12</gx:physicalWidth>
      <gx:outerColor>ff55ff55</gx:outerColor>
      <gx:outerWidth>0.25</gx:outerWidth>
    </LineStyle>
  </Style>
  <Placemark>
    <styleUrl>#street_sidewalk</styleUrl>
    <LineString>
      <coordinates>
      -122.2442883478408,37.4347536724074,0
      -122.2417741446485,37.43594997501623,0
      -122.2414951359056,37.43611878445952,0
      </coordinates>
    </LineString>
  </Placemark>
</Document>
</kml>

도로의 너비가 12미터로 설정되었으므로 outerWidth의 값 .25는 너비의 3미터가 더 밝은 녹색으로 설정됨을 의미합니다 (도로의 각 측면에 약 1.5미터).

고속도로 육교

이제 기본 도로가 있으니 고속도로 고가도로를 만들어 보겠습니다. 이 그래프는 연한 주황색으로 표시되고 중앙선은 더 어두운 주황색으로 표시됩니다. 여기서 중요한 점은 고속도로가 도로 위에 렌더링되도록 <LineSring><gx:drawOrder> 1 (기본값은 0)을 포함하는 것입니다. 더 복잡한 고속도로 인터체인지 (또는 두 개 이상의 중첩된 LineString이 필요한 지도 제작)를 빌드하는 경우 상단에 렌더링하려는 항목의 <gx:drawOrder>에 더 높은 값을 추가하면 됩니다.

<?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>Road Styling</name>
  <Style id="street_sidewalk">
    <LineStyle>
      <color>ff235523</color>
      <gx:physicalWidth>10</gx:physicalWidth>
      <gx:outerColor>ff55ff55</gx:outerColor>
      <gx:outerWidth>0.25</gx:outerWidth>
    </LineStyle>
  </Style>
  <Style id="highway">
    <LineStyle>
      <color>cc1447ff</color>
      <gx:physicalWidth>20</gx:physicalWidth>
      <gx:outerColor>cc1473ff</gx:outerColor>
      <gx:outerWidth>0.75</gx:outerWidth>
    </LineStyle>
  </Style>
  <Placemark>
    <styleUrl>#street_sidewalk</styleUrl>
    <LineString>
      <coordinates>
     -122.2442883478408,37.4347536724074,0
     -122.2417741446485,37.43594997501623,0
     -122.2414951359056,37.43611878445952,0
      </coordinates>
    </LineString>
  </Placemark>
  <Placemark>
    <styleUrl>#highway</styleUrl>
    <LineString>
    <gx:drawOrder>1</gx:drawOrder>
    <coordinates>
      -122.2442692500139,37.43634904345254,0
      -122.2415928723012,37.43416417520744,0
    </coordinates>
    </LineString>
  </Placemark>
</Document>
</kml>

다음 단계

여러 색상으로 단일 LineString을 설명하는 기능과 렌더링 순서를 제어하는 기능을 결합하면 이전에는 불가능했던 복잡한 선형 지도 제작을 만들 수 있습니다. 고속도로 육교를 건설하든 추상 미술 프로젝트를 진행하든 이 스타일 지정 규칙을 사용해 보세요.