Problem getting polygons for NY state?

2 views (last 30 days)
Amato
Amato on 28 May 2014
Commented: Amato on 29 May 2014
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!!!

Accepted Answer

Sara
Sara on 29 May 2014
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 Comment
Amato
Amato on 29 May 2014
I knew there must have been an easier way! Thank you very much!

Sign in to comment.

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!