0

我正在尝试在 Visual Analytics 中创建到俄罗斯的自定义地图。于是,我就遇到了“区隔”的麻烦。您可以通过使用库 中的区域
来查看此问题的可视化。Dal'nevostochnyy (DVFO)MAPSGFK在此处输入图像描述

我试图通过这段代码修复分散:

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

所以我得到了这个结果(在图片图像区域Chukotka,但没关系)

在此处输入图像描述 比以前的情况要好,但看起来像拐杖
我尝试通过使用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;

在此处输入图像描述

所以我的问题是:
如何删除两个分离区域之间的空间?

感谢您的回答/评论。

4

2 回答 2

2

这似乎有效,至少对于特定问题。问题是这些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;
于 2017-04-06T20:24:01.773 回答
0

感谢@Jor你的帖子。您的回答让我想到:“可能我不能合并两个 poligon,因为它们没有共同点?”。所以,我看到了这样的任务:

  1. 删除多边形之间的点(下图中的红色方块)
  2. 设置边缘的多边形点坐标相等(蓝色箭头)

在此处输入图像描述

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;

结果: 在此处输入图像描述

于 2017-04-07T13:00:14.143 回答