Filter löschen
Filter löschen

file handling with coordinates

3 Ansichten (letzte 30 Tage)
Edgar Gonzalez
Edgar Gonzalez am 12 Okt. 2018
Kommentiert: jonas am 15 Okt. 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 Kommentare
jonas
jonas am 12 Okt. 2018
I dont really understand the problem you are facing. Can you elaborate?
Edgar Gonzalez
Edgar Gonzalez am 12 Okt. 2018
Bearbeitet: Edgar Gonzalez am 12 Okt. 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)

Melden Sie sich an, um zu kommentieren.

Antworten (1)

jonas
jonas am 12 Okt. 2018
Bearbeitet: jonas am 12 Okt. 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 Kommentare
Walter Roberson
Walter Roberson am 15 Okt. 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 am 15 Okt. 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.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Cell Arrays finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by