2017-04-06 2 views
0

私はVisual Analyticsでロシア向けのカスタムマップを作成しようとしています。 私は「離れた地域」の問題に直面しました。
MAPSGFKライブラリのDal'nevostochnyy (DVFO)領域を使用して、この問題の可視化を確認することができます。 enter image description heregeomapsの子午線ポリゴンで区切られています。SAS VA(SAS GRAPH)

私は、このコードによって散乱を修正しようとした:

data mps.vaasia1; 
set mps.vaasia1; 
if LONG < 0 and isoalpha2="RU" then long=long+360 ; 
run; 

そして私は(写真撮影部位Chukotkaに、それは問題ではdosen't)この結果を取得

enter image description here それは以前の状況が良いですが、それは松葉杖のように見えます
私はこの2つのポリゴンをGREMOVE(さらにパラメータを追加する:FUZZ)を使って組み合わせようとしましたが、結果は同じでした。

UPD:
私は座標を取得するには、このコードを使用します。

data ch; 
set mapsgfk.Russia; 
where id ="RU-77" ; 
if LONG LE 0 then long=long+360 ; 
x=long ; 
y = lat; 
run; 

enter image description here

だから私の質問は次のとおりです。
領域を分離する方法私は2 の間にスペースを削除することができますか?

あなたの回答/コメントはThxです。

+0

マップを生成するための完全なコードを含めることはできますか? – Joe

答えて

0

おかげ@Jorあなたが投稿するために。あなたの答えは、私に、「共通のポイントがないので、2つのポリゴンをマージすることはできませんか?だから、私はこのような作業を見た:

  1. を(下の写真の赤い四角)ポリゴン間のポイントを削除
  2. 設定したエッジのポリゴンのドットが等しい(青矢印)

enter image description here

を座標
data ch 
/*Drop out dots with coord in red squares*/ 
(where=(not(lat > 66 and lat <68 and long >179 and long<181))); 
set mapsgfk.Russia; 
where id ="RU-77" ; 

if LONG LE 0 then long=long+360 ; 

/*Set coordinates of near edge's points the same*/ 
if (long > 179.9 and long < 180.3) then do; 
    long =180; 
    if (lat > 68.9 and lat < 69) then lat=68.97; 
    if (lat > 65 and lat < 65.1) then lat=65; 
    if (lat > 70.9 and lat < 71) then lat=70.95; 
    if (lat > 71.5 and lat < 71.6) then lat=71.55; 
end; 

x=long ; 
y = lat; 
run; 

proc gremove data=ch out=ch; 
by id; 
id id1; 
run; 


proc gmap data=ch map=ch; 
id id; 
choro id/nolegend; 
run; 
quit; 

結果: enter image description here

1

これは、少なくとも特定の問題では機能しているようです。問題は、segmentがこれと同じではないため、境界線を取得することです。もっと一般的なやりかたでこれをやってみると良い方法があるかどうかわからない。恐らくGPROJECTを使用するより良い方法があるかもしれませんが、それは完全に問題を避けるでしょう。

しかし、これは、少なくともこの特定の問題のために、働く...

data vaasia1; 
set mapsgfk.asia1; 
if LONG LE 0 and isoalpha2="RU" then do; 
    long=long+360 ; 
    if segment=2 then segment=1; 
    else if segment=7 then segment=8; 
end; 
if idname =: 'Dal'; 
*if long le 0; 
run; 


proc gmap data=vaasia1 map=vaasia1; 
id id; 
choro id/nolegend; 
run; 
quit; 
関連する問題