Loading...

verticapy.sql.geo.coordinate_converter

verticapy.sql.geo.coordinate_converter(vdf: Annotated[str | vDataFrame, ''], x: str, y: str, x0: float = 0.0, earth_radius: Annotated[int | float | Decimal, 'Python Numbers'] = 6371, reverse: bool = False) vDataFrame

Converts between geographic coordinates (latitude and longitude) and Euclidean coordinates (x,y).

Parameters

vdf: SQLRelation

Input vDataFrame.

x: str

vDataColumn used as the abscissa (longitude).

y: str

vDataColumn used as the ordinate (latitude).

x0: float, optional

The initial abscissa.

earth_radius: PythonNumber, optional

Earth radius in km.

reverse: bool, optional

If set to True, the Euclidean coordinates are converted to latitude and longitude.

Returns

vDataFrame

result of the transformation.

Examples

For this example, we will use the Cities dataset.

import verticapy.datasets as vpd

cities = vpd.load_cities()
Abc
city
Varchar(82)
Abc
Long varchar(2411724)
1Abu Dhabi
2Amsterdam
3Apia
4Ashgabat
5Bangui
6Budapest
7Bujumbura
8Castries
9Colombo
10Conakry
11Cotonou
12Dakar
13Dublin
14Georgetown
15Havana
16Kuala Lumpur
17København
18Lilongwe
19Ljubljana
20London
21Monrovia
22Oslo
23Panama City
24Paris
25Phnom Penh
26Podgorica
27Pretoria
28Rangoon
29San Marino
30San Salvador
31Seoul
32Suva
33Tegucigalpa
34Tehran
35Thimphu
36Vatican City
37Warsaw
38Yaounde
39Zagreb
40Andorra
41Athens
42Banjul
43Basseterre
44Belgrade
45Bloemfontein
46Bogota
47Brasilia
48Accra
49Addis Ababa
50Ankara
51Antananarivo
52Asmara
53Astana
54Asuncion
55Bamako
56Bangkok
57Beijing
58Berlin
59Brussels
60Buenos Aires
61Chisinau
62Damascus
63Dar es Salaam
64Dhaka
65Djibouti
66Doha
67Jakarta
68Jerusalem
69Kampala
70Kinshasa
71Kuwait
72La Paz
73Lisbon
74Luxembourg
75Madrid
76Manila
77Maputo
78Mbabane
79Melekeok
80Minsk
81Nairobi
82Naypyidaw
83New Delhi
84Nicosia
85Nouakchott
86Palikir
87Port-au-Prince
88Praia
89Quito
90Rome
91Saint George's
92San Jose
93Sarajevo
94Taipei
95Tbilisi
96Tokyo
97Tripoli
98Valletta
99Vienna
100Vilnius
Rows: 1-100 | Columns: 2

Note

VerticaPy offers a wide range of sample datasets that are ideal for training and testing purposes. You can explore the full list of available datasets in the Datasets, which provides detailed information on each dataset and how to use them effectively. These datasets are invaluable resources for honing your data analysis and machine learning skills within the VerticaPy environment.

Let’s extract the latitude and longitude.

cities["lat"] = "ST_X(geometry)"
cities["lon"] = "ST_Y(geometry)"
display(cities)
Abc
city
Varchar(82)
100%
...
🌎
Geometry(1048576)
100%
🌎
lon
Float(22)
100%
1Andorra...42.5000014435459
2Athens...37.9852720905523
3Banjul...13.4538764603159
4Basseterre...17.3020304554894
5Belgrade...44.8205913044467
6Bloemfontein...-29.1199938773787
7Bogota...4.59836942114782
8Brasilia...-15.781394372879
9Bridgetown...13.1020025827511
10Cairo...30.0519062051037
11Cape Town...-33.9180651086288
12Dili...-8.55938840854645
13Funafuti...-8.51665199904107
14Gaborone...-24.6463134574389
15Guatemala...14.6230805214482
16Harare...-17.8158438357778
17Helsinki...60.1775092325681
18Johannesburg...-26.1680988813841
19Juba...4.82997519827796
20Khartoum...15.5900240842777

Let’s leverage the coordinate_converter function to calculate Euclidean distances. We’ll project the latitude and longitude into x, y coordinates.

from verticapy.sql.geo import coordinate_converter

convert_xy = coordinate_converter(cities, "lon", "lat")
display(convert_xy)
Abc
city
Varchar(82)
100%
...
🌎
Geometry(1048576)
100%
🌎
lon
Float(22)
100%
1Andorra...4725.78454290873
2Athens...4223.76954368256
3Banjul...1496.00280608979
4Basseterre...1923.89800730006
5Belgrade...4983.8223622637
6Bloemfontein...-3237.99558308512
7Bogota...511.315350469114
8Brasilia...-1754.81098964113
9Bridgetown...1456.87621608583
10Cairo...3341.61950600567
11Cape Town...-3771.51676167934
12Dili...-951.760566210609
13Funafuti...-947.008494290607
14Gaborone...-2740.54501695872
15Guatemala...1626.0123658999
16Harare...-1981.03144843023
17Abu Dhabi...2720.57108506641
18Amsterdam...5821.26729771856
19Apia...-1539.10958564241
20Ashgabat...4219.84690274865

We can effortlessly reverse the operation.

convert_reverse_xy = coordinate_converter(convert_xy, "lon", "lat", reverse = True)
display(convert_reverse_xy)
Abc
city
Varchar(82)
100%
...
🌎
Geometry(1048576)
100%
🌎
lon
Float(22)
100%
1Andorra...42.5000014435459
2Athens...37.9852720905523
3Banjul...13.4538764603159
4Basseterre...17.3020304554894
5Belgrade...44.8205913044467
6Bloemfontein...-29.1199938773787
7Bogota...4.59836942114782
8Brasilia...-15.781394372879
9Abu Dhabi...24.4666835723799
10Amsterdam...52.3519145466644
11Apia...-13.8415450424484
12Ashgabat...37.949994933111
13Bangui...4.36664430634909
14Budapest...47.5019521849913
15Bujumbura...-3.37608722037464
16Castries...14.0019734893303
17Colombo...6.93196575818212
18Conakry...9.53346870502179
19Cotonou...6.40195442278247
20Dakar...14.7177775836233

Note

This function can be employed to operate on the Euclidean plane instead of a sphere, significantly improving computation speed.