0

1 つのラインストリングを含む単純な KML ファイルがあります (実際のファイルには数千あります)。Google Earth は 1 行の文字列を 2 行として描画するため、座標に問題があります。私の SQL Server Spatial への変換と最終的には C# コードは 1 行しか描画しません。

<?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>Test.kmz</name>
    <Style id="styleOSR">
      <LineStyle id="lineStyleOSR">
        <color>ff0f00ff</color>
        <width>2</width>
      </LineStyle>
    </Style>
    <Folder>
      <name>TEST</name>
      <description>
      </description>
      <Folder>
        <name>TEST</name>
        <Placemark>
          <name>OSR 0038</name>
          <styleUrl>#styleOSR</styleUrl>
          <LineString>
            <tessellate>1</tessellate>
            <altitudeMode>relativeToGround</altitudeMode>
            <coordinates>
              68.208,86.306,0 70.926,86.203,0 72.984,86.106,0 75.029,85.98900000000002,0 76.32599999999999,85.917,0 78.40300000000001,85.768,0 81.10299999999999,85.639,0 83.143,85.556,0 84.80200000000001,85.5,0 86.80200000000001,85.41800000000001,0 88.486,85.346,0 89.98,85.29600000000001,0 92.313,85.229,0 94.155,85.155,0 95.839,85.102,0 97.27300000000001,85.02800000000001,0 98.568,84.95999999999999,0 99.444,84.911,0 102.918,84.664,0 103.943,84.57800000000002,0 105.302,84.485,0 106.759,84.369,0 107.709,84.295,0 108.939,84.194,0 109.727,84.11,0 110.959,83.965,0 111.974,83.824,0 112.843,83.67400000000002,0 113.723,83.512,0 114.558,83.321,0 115.258,83.151,0 115.793,83.014,0 116.582,82.74,0 117.171,82.539,0 117.755,82.298,0 119.1,82.087,0 119.984,81.595,0 121.004,81.115,0 121.898,80.643,0 122.639,80.206,0 123.408,79.759,0 125.188,78.99,0 125.679,78.133,0 -29.60900000000001,39.993,0 -29.613,40.033,0 -29.58,40.079,0 -29.588,40.106,0
            </coordinates>
          </LineString>
        </Placemark>
      </Folder>
    </Folder>
  </Document>
</kml>

私の問題は、これをGoogle Earthにロードすると、地球上に2本の別々の線が描画されることです。これは実際に私がやりたいことです。下の写真に 2 本の赤い線が見えます。2 本の独立した線です。

ここに画像の説明を入力

しかし、折れ線を処理してから SQL Server ジオメトリから線をレンダリングすると、1 本の線が得られます

したがって、この座標行を解析して SQL Server に入力すると、

ここに画像の説明を入力

LINESTRING (68.208 86.306, 70.926 86.203, 72.984 86.106, 75.029 85.989000000000019, 76.326 85.917, 78.403 85.768, 81.103 85.639, 83.143 85.556, 84.802 85.5, 86.802 85.418, 88.486 85.346, 89.98 85.296, 92.313 85.229, 94.155 85.155, 95.839 85.102, 97.27300000000001 85.028, 98.568 84.96, 99.444 84.911, 102.918 84.664, 103.943 84.578000000000017, 105.302 84.485, 106.759 84.369, 107.709 84.295, 108.939 84.194, 109.727 84.11, 110.959 83.965, 111.974 83.824, 112.843 83.674000000000021, 113.723 83.512, 114.558 83.321, 115.258 83.151, 115.793 83.014, 116.582 82.74 , 117.171 82.539, 117.755 82.298, 119.1 82.087, 119.984 81.595, 121.004 81.115, 121.898 80.643, 122.639 80.206, 123.408 79.759, 125.188 78.99, 125.679 78.133, -29.609000000000009 39.993, -29.613 40.033, -29.58 40.079, -29.588 40.106 )

問題は、最後の 4 つの座標にこれらの値が含まれていることです

-29.609000000000009 39.993、-29.613 40.033、-29.58 40.079、-29.588 40.106

これで、Google Earth は座標が互いに異なることを認識しているようで、1 本の線をレンダリングせず、 2 本の線に分割します。

だから私の質問はどうやって同じことをするのですか?これらがたくさんあることを思い出してください。それらをカスタム レイヤーとして Google マップに配置したいと考えています。これが私の問題です。マップ上の奇妙な線です。

ここに画像の説明を入力

Google Earth が実際に完全な KML ファイルをレンダリングする方法を次に示します。

ここに画像の説明を入力

元の KML ファイルに興味がある場合は、ここから入手できます。

KML ファイル

これは、ニュージーランドの地震サイトでテクトニック プレートを地図上に表示するためのものです。

http://canterburyquakelive.co.nz

乾杯

クリス

4

2 に答える 2

0

元の KML ファイルを取得し、geoxml3 または Google マップ v3 API KmlLayer を使用してレンダリングすると、1 つのアーティファクトしか表示されません。

kmlを修正するのに十分簡単

他の「奇妙な行」がどこから来るのかわかりません。

于 2012-07-12T06:09:27.220 に答える
0

Google Earth は 1 本の線をレンダリングしています

あなたの例では、高度を次のように変更します。

<altitudeMode>clampToGround</altitudeMode>

とともにrelativeToGround

欠落している線分は地球を通過していました

于 2012-07-12T07:32:37.120 に答える