Extract coordinates from a geopolyshape
    조회 수: 56 (최근 30일)
  
       이전 댓글 표시
    
Given a geographic shape object of type geopolyshape:
us_states = readgeotable("usastatehi.shp")
montana = us_states.Shape(us_states.Name == "Montana")
class(montana)
ans =
    'geopolyshape'
How could I extract a list of Lat/Lon coordinates of the given shape object (mo_lat, mo_lon)?
% montana
mo_lat = ??? % list of latitudes of Montana polygon edges
mo_lon = ??? % list of longitudes of Montana polygon edges
I know it's possible when loading data using shaperead function instead:
us_states = shaperead("usastatehi.shp")
montana = us_states(26); % 26 is Montana
mo_lat = montana.Y; % list of latitudes of Montana edges
mo_lon = montana.X; % list of longitudes of Montana edges
But I'm curious if it's possible to extract data from existing geopolyshape?
댓글 수: 0
채택된 답변
  Jacob Halbrooks
    
 2022년 11월 8일
        You can access latitude-longitude coordinates from a geopolyshape using the geotable2table function. We recognize that there is a need to make coordinate data access easier, but in the meantime you can use this approach as a workaround. For example, assuming your table contains geopolyshape data:
GT = readgeotable("myfile.shp");
T = geotable2table(GT,["Lat","Lon"]); 
You can also extract the data into NaN-delimited arrays using polyjoin:
[lat,lon] = polyjoin(T.Lat,T.Lon);
추가 답변 (3개)
  Edmund Pickering
 2025년 8월 25일
        I have found a working solution. The secret is exportShapeData. This appears to be a hidden method. Not sure why this is so.

댓글 수: 0
  KSSV
      
      
 2022년 10월 12일
        
      편집: KSSV
      
      
 2022년 10월 12일
  
      The present version is much easier. Note that the class of us_states  is a table. You can extract the column using:
us_states = readgeotable("usastatehi.shp") ;
class(us_states)
us_states.(1)  % first column
us_states.LabelLat % third column
us_states.(4)   % 4th column 
댓글 수: 7
  Chad Greene
      
      
 2022년 11월 2일
				This is so frustrating. I don't understand why these new functions have been designed to prevent users from accessing the data we're trying to analyze. 
  Chad Greene
      
      
 2022년 11월 8일
        @Sergey Kostrukov I think I found a working solution. The m_shaperead function in M_Map can handle PolygonZ and PolyLineZ data. 
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!






