SAS基础:使用经度和纬度获得国家

时间:2016-10-13 15:56:21

标签: sas geo

首先,我需要提一下,我在地理数据中使用SAS的经验不多。我有一个经度和纬度的数据集,我需要看看各国的分布情况。我尝试谷歌,我找到的唯一解决方案是: https://communities.sas.com/t5/Base-SAS-Programming/Is-there-a-way-to-get-County-using-latitude-and-longitude/td-p/145233 它对美国数据非常有效,但世界其他地区的比例非常差(低于10%)。 我使用这段代码:

proc ginside data=gps map=maps.world out=gpscounties;
    id id cont;
run;

其中gps是我的经度和纬度数据。 这10%的比例是正常的还是我错过了什么?或者可能有其他更好的方法来解决我的问题?

我在SAS 9.4 TS1M2上。

以下是一个例子:

data gps;
  input x y;
datalines;
143.21  -33.494
119.306 26.0614
119.306 26.0614
143.21  -33.494
113.25  23.1167
139.751 35.685
113.25  23.1167
133.935 34.6617
133.935 34.6617
133.051 35.4722
;
run;

1 个答案:

答案 0 :(得分:3)

至少部分问题是你有拉/长,但你需要极弧度。

data gps;
  input x y;
   x=x*arcos(-1)/180;
  x=x*(-1);
  y=y*arcos(-1)/180;
  datalines;
143.21  -33.494
119.306 26.0614
119.306 26.0614
143.21  -33.494
113.25  23.1167
139.751 35.685
113.25  23.1167
133.935 34.6617
133.935 34.6617
133.051 35.4722
;
run;

然而,这不是你的全部问题,因为它仍然不适合我。我怀疑你需要使用GPROJECT将笛卡尔坐标转换为x / y坐标。

由于您使用的是9.4,因此您可以使用GFK地图,这样可以更加轻松地保存投影信息!

请参阅以下内容:

data gps;
  input x y;
  rownum = _n_;
  datalines;
143.21  -33.494
119.306 26.0614
119.306 26.0614
143.21  -33.494
113.25  23.1167
139.751 35.685
113.25  23.1167
133.935 34.6617
133.935 34.6617
133.051 35.4722
;
run;

proc gproject data=gps out=projected
  parmin=mapsgfk.projparm parmentry=world;
  id rownum;
run;


proc ginside data=projected map=mapsgfk.world out=countries;
  id idname id;
run;

这似乎对我有用。