file handling with coordinates

조회 수: 1 (최근 30일)
Edgar Gonzalez
Edgar Gonzalez 2018년 10월 12일
댓글: jonas 2018년 10월 15일
I have to write a code that organizes a text file filled with coordinates and organize them by latitude or longitude for each state(EX: CA would be North-South and Tennessee would be East-West) and then print out the cities in order by distance for whichever state the user inputted. I have attached the text file. I am not expecting somebody else to do the work for me. I just don't know where to start. Specifically I don't know how I would go about beginning to organize the cities per state.
Any and all help would be greatly appreiciated. Thank you!
  댓글 수: 2
jonas
jonas 2018년 10월 12일
I dont really understand the problem you are facing. Can you elaborate?
Edgar Gonzalez
Edgar Gonzalez 2018년 10월 12일
편집: Edgar Gonzalez 2018년 10월 12일
I attached a screeshot of the assignment maybe that can help. This is the code I have as of now. A lot of it is probably wrong. Right now I was just attempting to get the correct syntax down
% Project 1
fid = fopen('cities.txt', 'r'); % opens the file with read permission
state = input('Which state are you visiting ','s');
found = false;
while ~found && ~feof(fid) % tests for end of file
l=fgets(fid);
if ~contains(l,state), continue, end % keep going until found
lat_deg = str2double(l(1:2)); % defines variables for coordinates
lat_min = str2double(l(4:5));
long_deg = str2double(l(8:9));
long_min = str2double(l(11:12));
switch state
case 'Alabama'
fprintf('hi')
end
end
fclose(fid)

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

답변 (1개)

jonas
jonas 2018년 10월 12일
편집: jonas 2018년 10월 12일
I would approach this roughly as follows:
  • Read all coordinates and group them by state
  • Use a grouping function ( findrows/ splitapply, varfun, grpstats) to calculate the max/min long/lat in each state (4 values per state
  • If you have the mapping toolbox, calculate the east-west and north-south arclength to find the longest distance.
  • Use a grouping function again to output a sorted list of cities per state that is returned to the user upon request.
Try yourself, and ask if you have trouble with one of the steps.
  댓글 수: 3
Walter Roberson
Walter Roberson 2018년 10월 15일
Have you considered creating a vector of target lat or long values, and a cell array of character vectors with the names of the states? And use ismember() to match the input state to the name list, getting out an index (second output of ismember) that you use to index the lat or long array?
I do not know what those lat or long values are doing for you? And I am concerned because you have not defined both of them for each state, which always leads to the risk that you could accidentally use a value appropriate for the previous state.
jonas
jonas 2018년 10월 15일
That does not look optimal. Where did you get those coordinates from? Is it the "length" of the state in units of degrees? Do you know that you cannot compare latitude and longitude in absolute terms? You should compare arclength if you want to calculate the "length" of the state.

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

카테고리

Help CenterFile Exchange에서 Customize Object Display for Classes에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by