在地理地图数据生成50个随机位置

14日视图(30天)
马太福音
马太福音 2014年5月17日
回答: 凯利卡尼 2017年5月26日
我有一个名为map()的函数将一个字符串输入,并使用它生成一个particulare地图
函数地图(名称)
worldmap ({Name})
土地= shaperead (“landareas.shp”,“UseGeoCoords”,真正的);
geoshow(土地,“FaceColor”(0.15 0.5 0.15))
我想做的是随机生成的种子50位置并将其在陆地或在区域边界,
等我跑地图(澳大利亚)和我在澳大利亚得到50个随机生成的位置。
1评论
奥马尔曾
奥马尔曾 2017年5月26日
你能详细说明你想让你的代码做什么?的位置有多大,点或地区?

登录置评。

答案(1)

凯利卡尼
凯利卡尼 2017年5月26日
你具体想要的点位于指定的土地质量?或者在陆地上指定的地图范围内什么地方?例如,澳大利亚的地图限制,还包括位于印度尼西亚和新西兰。
如果你与任何土地质量好,那么最简单的方法是生成一些点,测试他们是否在多边形的土地( inpolygon ),只保留那些。重复,直到你得到足够的点。
Name =“澳大利亚”;
h = worldmap ({Name});
土地= shaperead (“landareas.shp”,“UseGeoCoords”,真正的);
geoshow(土地,“FaceColor”(0.15 0.5 0.15))
latlim = getm (h,“MapLatLimit”);
lonlim = getm (h,“MapLonLimit”);
《不扩散核武器条约》= 50;
nin = 0;
x = [];
y = [];
nin《不扩散核武器条约》
xtmp =兰德(不扩散核武器条约》,1)* diff (lonlim) + lonlim (1);
ytmp =兰德(不扩散核武器条约》,1)* diff (latlim) + latlim (1);
isin = inpolygon (xtmp, ytmp土地。朗]、[land.Lat]);
x = [x;xtmp(型号)];
y = [y;ytmp(型号)];
nin =长度(x);
结束
x = x(1:《不扩散核武器条约》);%去除额外的
y = y(1:《不扩散核武器条约》);
plotm (y、x,“哟”);
如果你想限制指向一个特定的土地质量,然后你需要过滤掉正确的多边形。使用名称属性将是最简单的方法,但这只适用于 worldmap 分享一个名字的区域 landareas.shp 多边形。所以 Name =“澳大利亚” 很容易做……为类似 Name =“欧洲” ,你不得不作物的非洲和欧亚大陆的多边形地图限制之前运行 inpolygon 测试。

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!