0
|
11837 Views
|
4 Replies
|
0 Total Likes
View groups...
Share
GROUPS:

# What's wrong with my code? Code and error are in the message.

Posted 9 years ago
 What's wrong with my code? My code is as follows: (* Create empty lists *) xlist={}; ylist={}; zlist={}; latlonlist={}; (* Take inputs for ECEF *) (Label[startinput];x = Input["What is the x coordinate?"]; y = Input["What is the y coordinate?"]; z = Input["What is the z coordinate?"]; AppendTo [xlist, x] AppendTo [ylist, y] AppendTo [zlist, z] (Label[errorcontrol]; again=InputString["Enter more coords? Y for yes, N for no"]; If [again=="Y", Print["Okay!"];Goto[startinput]]; If [again!="N", Print["Sorry, this is an invalid input here!"];Goto[errorcontrol]]; If [again=="N", Print["Okay."]])); (* Debugging *) (* Print[xlist] Print[ylist] Print[zlist] Print[x] Print[y] Print[z] *) (* Combine Lists *) list=Transpose[{xlist,ylist,zlist}] (* More Debugging *) (* Print[list] *) (* Find length of list *) qty=Length[list] Print[qty] For[i = 1, i < qty, i++, point = Part[list, i]; GeoPositionXYZ[point, "ITRF00"]; latlonlist = AppendTo[latlonlist, GeoMarker[GeoPosition[%]]]; ]; (* (* Put in Coordinate Form *) GeoPositionXYZ[{x, y, z}, "ITRF00"]; (* Convert to LLA *) GeoPosition[%] *) (* Display Map *) GeoGraphics[latlonlist, 7GeoRange -> "World", GeoProjection -> "Robinson"] (* Display 3D Plot *) ListPointPlot3D[list, DataRange -> {{-1000000, 1000000}, {-1000000, 1000000}}] However, GeoGraphics returns: GeoGraphics[{GeoMarker[GeoPosition[Null]], GeoMarker[GeoPosition[Null]]}, 7 GeoRange -> "World", GeoProjection -> "Robinson"] HOW IS IT NULL WHEN I KNOW I AM FEEDING VALUES INTO IT?!?
4 Replies
Sort By:
Posted 9 years ago
 Took a little different approach: Module[ {intype, in = {0, 0, 0}, xyzCoords = {}, latlongCoords, again = True, outtype}, intype = ChoiceDialog["Type of input?", {"x,y,z" -> 1, "All" -> 2}]; Switch[intype, 1, While[again, in[] = Input["What is the x coordinate?"]; in[] = Input["What is the y coordinate?"]; in[] = Input["What is the z coordinate?"]; AppendTo[xyzCoords, in]; again = ChoiceDialog["Enter more coords?", {"Yes" -> True, "No" -> False}] ], 2, xyzCoords = Input[] ]; latlongCoords = Table[GeoPositionXYZ[xyzCoords[[i]], "ITRF00"], {i, Length@xyzCoords}]; latlongCoords = Table[GeoPosition@latlongCoords[[i]], {i, Length@xyzCoords}]; latlongCoords = Table[GeoMarker@latlongCoords[[i]], {i, Length@xyzCoords}]; outtype = ChoiceDialog["Type of map?", {"2D" -> 1, "3D" -> 2}]; Switch[outtype, 1, GeoGraphics[latlongCoords, GeoRange -> "World", GeoProjection -> "Robinson"], 2, Graphics3D[{PointSize@Large, Point@Table[Normalize@xyzCoords[[i]], {i, Length@xyzCoords}], Opacity@0.5, Sphere[]}] ] ] These are the ITRF00 coordinates for Brazilia, Berlin and New Delhi. You can input them in one go, selecting the "All" alternative and paste: {{4115144, -4555919, -1723314}, {3783638, 899994, 5038219}, {1239693, 5465361, 3035052}} 
Posted 9 years ago
 Thank you. It works. And now it's time to adapt it. Here's the thing... I am an undergrad researcher and this is part of a research project. I have studied this code, I know how it works, and even learned some new commands, which is the point of doing research. Thank you much. I made a few small changes to the code in (* *) to document it... and now the next step is to adapt it to take data from GPS files in order to map the locations of the satellites in the GPS constellation. (those are given in ITRF, hence the need to have ITRF inputs.) Programming is always easiest when divided into steps and thanks so much for helping me with the most important step. I posted many questions and I thank everyone who helped. I will ask the professor if we can put your names right next to mine in the list when the final code is assembled from everyone's tidbits.
Posted 9 years ago
 The new code doesn't work either... it's putting an XYZ cartesian point in latlonlist. It needs to convert the cartesian point to a latitude/longitude/height point first. I've tried 50 times and can't implement the conversion. Please help again.
Posted 9 years ago
 A number of typos and misunderstandings and missing semicolons, all of which cause problems.Compare this, character by character with your original and track down why each change is there xlist = {}; ylist = {}; zlist = {}; latlonlist = {}; (Label[startinput]; x = Input["What is the x coordinate?"]; y = Input["What is the y coordinate?"]; z = Input["What is the z coordinate?"]; AppendTo[xlist, x]; AppendTo[ylist, y]; AppendTo[zlist, z]; (Label[errorcontrol]; again = InputString["Enter more coords? Y for yes, N for no"]; If[again == "Y", Print["Okay!"]; Goto[startinput]]; If[again != "N", Print["Sorry, this is an invalid input here!"]; Goto[errorcontrol]]; If[again == "N", Print["Okay."]])); list = Transpose[{xlist, ylist, zlist}]; qty = Length[list]; For[i = 1, i <= qty, i++, point = Part[list, i]; AppendTo[latlonlist, GeoMarker[GeoPosition[point]]]; ]; GeoGraphics[latlonlist, GeoRange -> "World", GeoProjection -> "Robinson"] ListPointPlot3D[list, DataRange -> {{-1000000, 1000000}, {-1000000, 1000000}}]