Problem getting polygons for NY state?

조회 수: 1 (최근 30일)
Amato
Amato 2014년 5월 28일
댓글: Amato 2014년 5월 29일
I have an image of a CONUS map I made via geoshow:
ax = usamap('conus');
states = shaperead('usastatelo', 'UseGeoCoords', true,'Selector',...
{@(name) ~any(strcmp(name,{'Alaska','Hawaii'})), 'Name'});
faceColors = makesymbolspec('Polygon',{'INDEX', [1 numel(states)],...
'FaceColor',repmat([114 132 153]/255,numel(states),1)});
gs = geoshow(ax, states, 'DisplayType', 'polygon','SymbolSpec', faceColors);
I am replacing the colors of individual states and exporting these states' vector boundaries so I can make each a "clickable" region on a website (via an image-map). This works fine for almost all the states. For example,
gs = geoshow(ax,'Utah')
x=get(get(gs,'Children'),'Xdata');
y=get(get(gs,'Children'),'Ydata');
If I do plot(x,y) I get a nice image of the outline of Utah. However, for some reason this isn't working for New York. Here x and y are 2-dimension arrays, size = (3,298), and the points are not in a logical order; they criss-cross the state and do not make a nice outline.
Anyone here know why NY state is different, and how to reorder the x and y arrays to make a nice polygon?
Thanks!!!

채택된 답변

Sara
Sara 2014년 5월 29일
The second part of the code didn't work for me, so I replaced it with this and I get a nice contour:
k = struct2cell(states);
names = k(5,:);
index = find(strcmp(names,'New York')==1);
x = states(index).Lon;
y = states(index).Lat;
figure
plot(x,y)
  댓글 수: 1
Amato
Amato 2014년 5월 29일
I knew there must have been an easier way! Thank you very much!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by