由地理地图 SAS VA(SAS GRAPH)中的子午线多边形分隔
Separated by the Meridian polygons in geomaps SAS VA (SAS GRAPH)
我正在尝试在 Visual Analytics 中创建到俄罗斯的自定义地图。
所以,我遇到了 "separated region".
的麻烦
您可以使用 MAPSGFK
库中的 Dal'nevostochnyy (DVFO)
区域查看此问题的可视化。
我尝试通过以下代码修复散点:
data mps.vaasia1;
set mps.vaasia1;
if LONG < 0 and isoalpha2="RU" then long=long+360 ;
run;
所以我得到了这个结果(在图片成像区域Chukotka
,但没关系):
比以前好多了,但是看起来像crutch.
我尝试使用 GREMOVE
(也添加参数 FUZZ
)来组合这两个多边形,但结果是一样的。
更新:
我使用此代码获取坐标:
data ch;
set mapsgfk.Russia;
where id ="RU-77" ;
if LONG LE 0 then long=long+360 ;
x=long ;
y = lat;
run;
所以我的问题是:
如何删除两个 分隔的 区域之间的 space?
感谢您的回答/评论。
这似乎有效,至少对于特定问题而言。问题是这些 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;
感谢@Jor post。你的回答促使我思考:"May be I can't merge two poligons because they don't have common points?"。所以,我看到了这样的任务:
- 去除多边形之间的点(下图中的红色方块)
- 设置边的多边形点坐标等于(蓝色箭头)
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;
结果:
我正在尝试在 Visual Analytics 中创建到俄罗斯的自定义地图。
所以,我遇到了 "separated region".
的麻烦
您可以使用 MAPSGFK
库中的 Dal'nevostochnyy (DVFO)
区域查看此问题的可视化。
我尝试通过以下代码修复散点:
data mps.vaasia1;
set mps.vaasia1;
if LONG < 0 and isoalpha2="RU" then long=long+360 ;
run;
所以我得到了这个结果(在图片成像区域Chukotka
,但没关系):
我尝试使用 GREMOVE
(也添加参数 FUZZ
)来组合这两个多边形,但结果是一样的。
更新:
我使用此代码获取坐标:
data ch;
set mapsgfk.Russia;
where id ="RU-77" ;
if LONG LE 0 then long=long+360 ;
x=long ;
y = lat;
run;
所以我的问题是:
如何删除两个 分隔的 区域之间的 space?
感谢您的回答/评论。
这似乎有效,至少对于特定问题而言。问题是这些 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;
感谢@Jor post。你的回答促使我思考:"May be I can't merge two poligons because they don't have common points?"。所以,我看到了这样的任务:
- 去除多边形之间的点(下图中的红色方块)
- 设置边的多边形点坐标等于(蓝色箭头)
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;
结果: