file handling with coordinates

3 views (last 30 days)
Edgar Gonzalez
Edgar Gonzalez on 12 Oct 2018
Commented: jonas on 15 Oct 2018
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 Comments
jonas
jonas on 12 Oct 2018
I dont really understand the problem you are facing. Can you elaborate?
Edgar Gonzalez
Edgar Gonzalez on 12 Oct 2018
Edited: Edgar Gonzalez on 12 Oct 2018
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)

Sign in to comment.

Answers (1)

jonas
jonas on 12 Oct 2018
Edited: jonas on 12 Oct 2018
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 Comments
Walter Roberson
Walter Roberson on 15 Oct 2018
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 on 15 Oct 2018
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.

Sign in to comment.

Categories

Find more on Cell Arrays in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!