({{, (RefLink[GeoGridVector, paclet:ref/GeoGridVector])[loc->{(Subscript[v, x]),(Subscript[v, y])},proj] 
represents a horizontal two-dimensional vector of components (Subscript[v, x]), (Subscript[v, y]) in the orthonormal frame of the coordinates of the geo projection proj, at geo location loc.}, {, (RefLink[GeoGridVector, paclet:ref/GeoGridVector])[loc->{(Subscript[v, x]),(Subscript[v, y]),(Subscript[v, z])},proj]
represents a three-dimensional vector of horizontal components (Subscript[v, x]), (Subscript[v, y]) and vertical component (Subscript[v, z]) at geo location loc.}, {, (RefLink[GeoGridVector, paclet:ref/GeoGridVector])[{(Subscript[loc, 1]),(Subscript[loc, 2]),…}->{(Subscript[vec, 1]),(Subscript[vec, 2]),…},proj]
represents a collection of vectors (Subscript[vec, i]) at respective geo locations (Subscript[loc, i]).}, {, (RefLink[GeoGridVector, paclet:ref/GeoGridVector])[{(Subscript[loc, 1])->(Subscript[vec, 1]),(Subscript[loc, 2])->(Subscript[vec, 2]),…},proj]
represents the same collection of vectors.}, {, (RefLink[GeoGridVector, paclet:ref/GeoGridVector])[vec,proj]
represents a geo vector whose associated location has been implicitly specified.}})

OpenersNotesSection(Spacer1)Details

(RefLink[GeoGridVector, paclet:ref/GeoGridVector])[…] can represent any vectorial magnitude on the surface of the Earth or any other celestial globe, like wind speed, magnetic field, scalar gradients, etc.

(RefLink[GeoGridVector, paclet:ref/GeoGridVector]) describes data using an orthonormal frame tangent to the reference ellipsoid at the given location.

(RefLink[GeoGridVector, paclet:ref/GeoGridVector]) acts both as a vector data container and as a converter from other types of geo vector data, like (RefLink[GeoVectorENU, paclet:ref/GeoVectorENU]) or (RefLink[GeoVector, paclet:ref/GeoVector]).

In (RefLink[GeoGridVector, paclet:ref/GeoGridVector])[loc->vec], the components of the vector vec can be quantities, but their units must be compatible.

In (RefLink[GeoGridVector, paclet:ref/GeoGridVector])[loc->vec], the location loc can be given as a {lat,lon} pair in degrees, a geo (RefLink[Entity, paclet:ref/Entity]) object or any geo location object with head (RefLink[GeoPosition, paclet:ref/GeoPosition]) or similar.

In (RefLink[GeoGridVector, paclet:ref/GeoGridVector])[loc->vec,proj], the geo projection proj can be specified in the following forms:

Names of possible projections are given by (RefLink[GeoProjectionData, paclet:ref/GeoProjectionData])[].

Default values of parameters for a particular named projection are given by (RefLink[GeoProjectionData, paclet:ref/GeoProjectionData])[proj].

(RefLink[GeoGridVector, paclet:ref/GeoGridVector])[…][prop] gives the specified property of a geo grid vector.

Possible properties include:

OpenersPrimaryExamplesSection(Spacer1)Examples  (13)

OpenersExampleSection0(Spacer1)Basic Examples  (2)

Take a geo vector aligned with the vertical axis of the Albers coordinates at your location:

gv=GeoGridVector[Here->Quantity[{0,10},"Miles"/"Hours"],"Albers"]

GeoGraphics[GeoMarker[gv,"Dart"],GeoRange->"World",GeoProjection->"Albers",GeoGridLines->Automatic]

That vector does not point northward in the local Mercator projection:

GeoGraphics[GeoMarker[gv,"Dart"],GeoGridLines->Automatic]

Take two orthogonal geo vectors at New York:

gv=GeoVector[{(Entity["New York City", Entity["City",{"NewYork","NewYork","UnitedStates"}], "Entity[\"City\", {\"NewYork\", \"NewYork\", \"UnitedStates\"}]", "city"])->{1,0},(Entity["New York City", Entity["City",{"NewYork","NewYork","UnitedStates"}], "Entity[\"City\", {\"NewYork\", \"NewYork\", \"UnitedStates\"}]", "city"])->{1,90}}]

They are not orthogonal in the Mollweide projection with default centering:

ggv=GeoGridVector[gv,{"Mollweide","Centering"->{0,0}}]

Show the geo grid vectors as darts in a (RefLink[GeoGraphics, paclet:ref/GeoGraphics]) map with that projection:

GeoGraphics[GeoMarker[ggv,Placed["Dart","Start"]],GeoProjection->{"Mollweide","Centering"->{0,0}},GeoGridLines->Automatic]

OpenersExampleSection1(Spacer1)Scope  (10)

OpenersExampleSubsection0(Spacer1)Data Specification  (4)

Specify the location of a geo grid vector as a {lat,lon} pair in degrees:

GeoGridVector[{20,-50}->{1,0},"Bonne"]

Construct a horizontal velocity vector crossing the Bonne frame axes at 45 degrees at Chicago:

gv=GeoGridVector[(Entity["Chicago", Entity["City",{"Chicago","Illinois","UnitedStates"}], "Entity[\"City\", {\"Chicago\", \"Illinois\", \"UnitedStates\"}]", "city"])->Quantity[{3,3},"Nanoteslas"],"Bonne"]

Rewrite the location as a geo position object with any head:

GeoPosition[gv]

GeoPositionXYZ[gv]

GeoGridPosition[gv,"Bonne"]

Anything that can be interpreted by (RefLink[GeoPosition, paclet:ref/GeoPosition]) can be used as a location:

GeoGridVector["12d 3m 4.5s N, 123d 58m 3.2s W"->{1,2},"Mollweide"]//GeoPosition

GeoGridVector["NullIsland"->{1,2},"Mollweide"]//GeoPosition

Work with horizontal 2D or 3D vectors of any unit dimension:

GeoGridVector[(Entity["Tokyo", Entity["City",{"Tokyo","Tokyo","Japan"}], "Entity[\"City\", {\"Tokyo\", \"Tokyo\", \"Japan\"}]", "city"])->{1,1/2},"Mercator"]

GeoGridVector[(Entity["Tokyo", Entity["City",{"Tokyo","Tokyo","Japan"}], "Entity[\"City\", {\"Tokyo\", \"Tokyo\", \"Japan\"}]", "city"])->Quantity[{2,3},"Meters"/"Seconds"],"Mercator"]

GeoGridVector[(Entity["Tokyo", Entity["City",{"Tokyo","Tokyo","Japan"}], "Entity[\"City\", {\"Tokyo\", \"Tokyo\", \"Japan\"}]", "city"])->Quantity[{-4,5,-1},"Meters"/"Seconds"^2],"Mercator"]

OpenersExampleSubsection1(Spacer1)Geo Projection Conversion  (2)

Convert geo grid vector data in the Mercator projection to different geo projections:

GeoGridVector[Here->Quantity[{10,20},"Miles"/"Hours"],"Mercator"]

GeoGridVector[%,"Albers"]

GeoGridVector[%,"LambertAzimuthal"]

Convert back to the original projection:

GeoGridVector[%,"Mercator"]

Use projections with default parameters, as given by (RefLink[GeoProjectionData, paclet:ref/GeoProjectionData]):

GeoProjectionData["Albers"]

GeoGridVector[Here->Quantity[{1.5,-3.2},"Miles"/"Hours"],"Albers"]

Convert the geo grid vector to the Albers projection with nondefault parameters:

GeoGridVector[%,{"Albers","Centering"->Here}]

Convert back to the Albers projection with default parameters:

GeoGridVector[%,"Albers"]

OpenersExampleSubsection2(Spacer1)Geo Vector Arrays  (3)

Compute gravitational field data simultaneously for several locations:

GeogravityModelData[{(Entity["London", Entity["City",{"London","GreaterLondon","UnitedKingdom"}], "Entity[\"City\", {\"London\", \"GreaterLondon\", \"UnitedKingdom\"}]", "city"]),(Entity["Paris", Entity["City",{"Paris","IleDeFrance","France"}], "Entity[\"City\", {\"Paris\", \"IleDeFrance\", \"France\"}]", "city"]),(Entity["Amsterdam", Entity["City",{"Amsterdam","NoordHolland","Netherlands"}], "Entity[\"City\", {\"Amsterdam\", \"NoordHolland\", \"Netherlands\"}]", "city"]),(Entity["Berlin", Entity["City",{"Berlin","Berlin","Germany"}], "Entity[\"City\", {\"Berlin\", \"Berlin\", \"Germany\"}]", "city"])},GeoVectorENU]//Normal

Convert it to a single geo grid vector array in the Mercator projection:

GeoGridVector[%,"Mercator"]

Represent the relative sizes and directions of the small horizontal components:

GeoGraphics[GeoMarker[%,{"Dart","Circle"}]]

Generate a million random geo grid vectors at respective random locations:

ggv=GeoGridVector[RandomGeoPosition[10^6]->QuantityArray[RandomReal[{-1,1},{10^6,2}],"Meters"],"Albers"]

Convert them into geo vector form:

AbsoluteTiming[gv=GeoVector[ggv]]

Use (RefLink[GeoGridVector, paclet:ref/GeoGridVector]) to transform them back to their projected form in the Albers projection:

AbsoluteTiming[newggv=GeoGridVector[gv,"Albers"]]

Check that the difference is just numerical error:

CoordinateBounds[newggv["Vector"]-ggv["Vector"]]

Generate a million random geo grid vectors at respective random locations:

ggv=GeoGridVector[RandomGeoPosition[10^6]->QuantityArray[RandomReal[{-1,1},{10^6,2}],"Meters"],"Albers"]

Convert the geo grid vectors from the Albers to the Mollweide projection:

AbsoluteTiming[pgv=GeoGridVector[ggv,"Mollweide"]]

Use (RefLink[GeoGridVector, paclet:ref/GeoGridVector]) to transform them back to the Albers projection:

AbsoluteTiming[newggv=GeoGridVector[pgv,"Albers"]]

Check that the difference is just numerical error:

CoordinateBounds[newggv["Vector"]-ggv["Vector"]]

OpenersExampleSubsection3(Spacer1)Data Extraction  (1)

A horizontal velocity vector at Chicago:

ggv=GeoGridVector[(Entity["Chicago", Entity["City",{"Chicago","Illinois","UnitedStates"}], "Entity[\"City\", {\"Chicago\", \"Illinois\", \"UnitedStates\"}]", "city"])->Quantity[{10,20},"Miles"/"Hours"],"Mercator"]

Extract the location of the geo vector:

ggv["Location"]

Extract the vector data from the geo vector:

ggv["Vector"]

Extract the loc->vec rule:

ggv["LocationVectorRule"]

Extract all properties:

ggv["Properties"]

AssociationMap[ggv,%]//Normal//Column

OpenersExampleSection3(Spacer1)Properties & Relations  (1)

(RefLink[GeoGridVector, paclet:ref/GeoGridVector]) components in the Mercator projection coincide with (RefLink[GeoVectorENU, paclet:ref/GeoVectorENU]) components:

enu=GeomagneticModelData[(Entity["Anchorage", Entity["City",{"Anchorage","Alaska","UnitedStates"}], "Entity[\"City\", {\"Anchorage\", \"Alaska\", \"UnitedStates\"}]", "city"]),Now,GeoVectorENU]//Normal

GeoGridVector[enu,"Mercator"]

Components are different in other projections, due to angular distortion or tilting of latitude, longitude lines:

GeoGridVector[enu,"Equirectangular"]

({{DocumentationFooterIconsRelatedFunction.png, ({{See Also}, {(RefLink[GeoVector, paclet:ref/GeoVector])  ▪  (RefLink[GeoVectorENU, paclet:ref/GeoVectorENU])  ▪  (RefLink[GeoVectorXYZ, paclet:ref/GeoVectorXYZ])  ▪  (RefLink[GeoGridPosition, paclet:ref/GeoGridPosition])  ▪  (RefLink[GeoVectorPlot, paclet:ref/GeoVectorPlot])}})}})

({{DocumentationFooterIconsRelatedGuide.png, ({{Related Guides}, {▪(RefLinkPlain[Geodesy, paclet:guide/Geodesy])}})}})