Google Earth

Google earth files are written in KML (or KMZ = KML compressed archive).

The best way to generate a simple kml file is to use the simplekml package that you can install with:

conda install -c conda-forge simplekml

Below is a basic example generating a simple kml file for google earth:

Rescaled photos used in this example:

import simplekml

# Bridges Coordinates ((Lon, Lat), img_path)
BRIDGES_COORDS = {
    "Pont Neuf": ((1.439001277058114, 43.59926197664164), "pont_neuf.png"),
    "Pont Saint-Pierre": ((1.434699883317263, 43.60213926211102), "pont_saint_pierre.png"),
    "Pont Saint-Michel": ((1.437952346786093, 43.59238591463478), "pont_saint_michel.png"),
    "Pont des Catalans": ((1.427956087350026, 43.60311850398945), "pont_des_catalans.png"),
}

# Parcs Coordinates ((Lon0, Lat0), (Lon1, Lat1), ...)
PARCS_POLYGONS = {
    "Prairie des filtres": [
        (1.437818056276741, 43.59893829861551),
        (1.435179725302889, 43.59283349466352),
        (1.43583380929208, 43.59276697714191),
        (1.437246891614994, 43.59456400502385),
        (1.437936652075082, 43.59666502555274),
        (1.43811494255768, 43.59766059035145),
        (1.437818056276741, 43.59893829861551)
    ],
    "Jardin des plantes": [
        (1.452354489577692, 43.59119785881381),
        (1.452659571836548, 43.59135000093642),
        (1.452122004633536, 43.5946235820627),
        (1.451817292056345, 43.59482726005042),
        (1.451707911270457, 43.59476125937645),
        (1.451509541177225, 43.59481733753255),
        (1.451300782103038, 43.59471257924214),
        (1.451458830464756, 43.59450710323053),
        (1.451421878391774, 43.59404188360258),
        (1.45013011773917, 43.59353787477147),
        (1.450346226785248, 43.59327238908971),
        (1.4488536541275, 43.59241223864972),
        (1.452354489577692, 43.59119785881381),
    ]
}

# Path From Capitol to Iles du Ramier
PATHS_COORDS = {
    "Capitol To Iles du Ramier": [
        (1.447480733498216, 43.60481386672822),
        (1.445735295910373, 43.60376328940693),
        (1.445687936142166, 43.60045898926229),
        (1.443785127425334, 43.60034852819621),
        (1.44249978028699, 43.60006341259311),
        (1.440549726305658, 43.59953279021803),
        (1.440097984310407, 43.59774349832251),
        (1.440511134417293, 43.59469725181547),
        (1.440850363525377, 43.5922190664575),
        (1.439840653155942, 43.59224402025578),
        (1.43893960439148, 43.59049390337003),
    ]
}

root = simplekml.Kml()

# Create folders/Documents
bridges = root.newdocument(name="Bridges")
parcs = root.newdocument(name="Parcs")

# Check if a folder already exists
already_exists = any([doc.name == "Bridges" for doc in root.containers])

# Add Points in the 'bridges' document
for bridge_name, (coords, img_path) in BRIDGES_COORDS.items():
    point = bridges.newpoint(name=bridge_name, coords=[coords])
    # Edit Point style
    point.style.labelstyle.color = simplekml.Color.red
    point.style.iconstyle.color = simplekml.Color.red
    # Adding the photo in the description
    pic = root.addfile(img_path)
    point.description = f'<img src="{pic}" alt="picture" width=300 height=225 align="left" />'

# Add Linestrings in the 'root' document
for path_name, coords in PATHS_COORDS.items():
    line = root.newlinestring(name=path_name)
    line.coords = coords
    line.linestyle.width = 5
    line.linestyle.color = simplekml.Color.yellow

# Add Polygons in the 'parcs' document
for parc_name, coords in PARCS_POLYGONS.items():
    pol = parcs.newpolygon(name=parc_name)
    pol.outerboundaryis = coords
    pol.style.linestyle.color = simplekml.Color.blue
    pol.style.linestyle.width = 5
    pol.style.polystyle.color = simplekml.Color.changealphaint(100, simplekml.Color.blue)

# Save as KMZ
root.savekmz("example.kmz", format = False)

Results in Google Earth:

../_images/kmz_example_screenshot.png

Sources: