rotate polygon in geographic axes

5 Ansichten (letzte 30 Tage)
Mike D.
Mike D. am 21 Feb. 2020
Kommentiert: Mike D. am 12 Jul. 2024
I have a n-sided polygon with vertices as (lat,lon) coordinates. I plot this on a geographic axes. I want to rotate it and end up with a new rotated set of (lat,lon) coordinates. I don't want a filled polygon, but perhaps I could adjust the transparency if that's the only way (such as patch). Here is what I tried, but not sure it works accurately due to the oblate earth surface. I prefer not to use Mapping Toolbox, but just core Matlab.
geoplot(lat,lon,'k-')
polyin = polyshape([lat',lon']);
refPoint = [refLat, refLon];
polyout = rotate(polyin, angleDeg, refPoint);
lat = [polyout.Vertices(:,1); polyout.Vertices(1,1)];
lon = [polyout.Vertices(:,2); polyout.Vertices(1,2)];
geoplot(lat,lon,'b--')
  1 Kommentar
Mike D.
Mike D. am 12 Jul. 2024
This rotate function works, but results are incorrect because the rotate(X,Y,...) assumes equal scale of X and Y. This is not true for latitude versus longitude. Change in latitude is not the same scale as change in longitude. The rotated object is incorrect. Here is my work around, which works accurately, but requires mapping toolbox functions:
p=geopolyshape(lats,lons);
[distm, azim] = distance(latRef, lonRef, lats, lons, wgs84Ellipsoid);
[latr, lonr] = reckon(latRef, lonRef, distm, azim+angle, wgs84Ellipsoid);
p2 = geopolyshape(latr, lonr);
geoplot(p2), or geoplot(latr, lonr)
Why can't a built-in function do this and make it easy. Or a toolbar, easy access button.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Pujitha Narra
Pujitha Narra am 24 Feb. 2020
Hi Mike,
A rotation matrix might be of use to you. You can have a look at this: https://www.mathworks.com/matlabcentral/answers/296860-rotating-a-2d-shape
  1 Kommentar
Mike D.
Mike D. am 12 Jul. 2024
No, this doesn't work on a geoaxes plot because the fill function gives error: "Adding Cartesian plot to geoaxes is not supported." It probably also does not work because it assumes the scale of X and Y are equal. This is not true for geoaxes plots. Change in latitude is not equal to the same change in longitude. Calculations across oblate earth surface involve elliptical equations.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Geographic Plots finden Sie in Help Center und File Exchange

Produkte


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by