Alueet IQ Compeoon

Tarvitset:

Jotta TIMissä olevat valmiit skriptit toimisivat, sinun pitää kirjautua TIMiin. Jos sinulla eio le tunnusta, tee se Log in/Sign up. Käytä Email kirjautumista jatkossa.

1. Alueet suoraan TIMissä FlyChart varten (nopeampi)

Flychart käyttää omaa fa5-tiedostomuotooan ja sen saat syntymään alla olevilla ohjeilla

  1. Katso FLYKistä alueiden nimet jotka haluat
  2. Kirjoita alla olevaan ehdot haettaville alueille (valmiina Jämiä varten).
  3. Paina Aja
  4. Mustan alueen oikeaan ylänurkkaan tulee pieni kopiointi-ikoni, klikkaa sitä
  5. Avaa joku tekstieditori (ei Word, mutta esim Notepad kelpaa)
  6. Pastea sisältö editoriin
  7. Tallenna jollekin nimelle, joka loppuu fa5 (esim jami.fa5)
  8. Avaa FlyChart
  9. Laita Compeon Menun päävalintaan
  10. Avaa Extras/System Settings ja katso oikea Com-portti ja laite
  11. Avaa Extras/FligInstruments options...
  12. Valitse Restricted areas/Load
  13. Paina Upload (lataa nopeasti)
# geo2fa5

2. Alueet suoraan TIMissä GpsDumpia varten (hitaampi lataus)

GPSDump käyttää OpenAir-tiedostomuotoa ja se on jostakin syystä hyvin hidas lataamaan tiedoston Compeoon. Toimii kyllä muuten. Tiedoston saat syntyään alla olevilla ohjeilla.

  1. Katso FLYKistä alueiden nimet jotka haluat
  2. Kirjoita alla olevaan ehdot haettaville alueille (valmiina Jämiä varten)
  3. Paina Aja
  4. Mustan alueen oikeaan ylänurkkaan tulee pieni kopiointi-ikoni, klikkaa sitä
  5. Avaa joku tekstieditori (ei Word, mutta esim Notepad kelpaa)
  6. Pastea sisältö editoriin
  7. Tallenna jollekin nimelle, joka loppuu txt (esim jami.txt)
  8. Avaa GpsDump
  9. Laita Compeo Manusta Airspaces-asentoon
  10. Ota CTR/Read CTR(s) from file, valitse tallentamasi tiedosto
  11. Valitse kaikki alueet
  12. Valitse CTR/Send to Compeo/Competino
# geo2openair

3. Manuaalinen haku omalla koneella

Edellisten lisäksi tarvitset:

  • Python tulkin

3.1 Hae ilmatilat

3.2 Tee Python ohjelma joka muuntaa tuon fa5-tiedostoksi

  • tee Python-ohjelma geo2fa5.py:
import json
import sys
import re

def load_filter_regex(filter_file):
    patterns = []
    with open(filter_file, "r", encoding="utf-8") as f:
        for line in f:
            pat = line.strip()
            if pat and not pat.startswith("#"):
                patterns.append(re.compile(pat))
    return patterns


def matches_any(name, patterns):
    return any(p.search(name) for p in patterns)


def geojson_to_fa5(input_file, output_file, filter_file=None):
    patterns = load_filter_regex(filter_file) if filter_file else None

    with open(input_file, "r", encoding="utf-8") as f:
        data = json.load(f)

    xml = []
    xml.append('<?xml version="1.0"?>')
    xml.append('<DATA>')
    xml.append('<producer program="GeoJSON2FA5" version="3.0"></producer>')

    total = 0
    kept = 0

    for feature in data["features"]:
        total += 1
        props = feature.get("properties", {})
        geom = feature.get("geometry", {})

        name = props.get("name", "UNKNOWN")
        warndist = props.get("warndist", 400)

        # REGEX FILTER
        if patterns is not None:
            if not matches_any(name, patterns):
                continue

        xml.append(f'<airspace name="{name}" warndist="{warndist}">')

        coords = geom.get("coordinates", [])

        if geom.get("type") == "Polygon":
            rings = coords[0]
            for i, (lon, lat) in enumerate(rings, start=1):
                xml.append(
                    f'  <point id="{i}" longitude="{lon}" latitude="{lat}"></point>'
                )

        xml.append('</airspace>')
        kept += 1

    xml.append('</DATA>')

    with open(output_file, "w", encoding="utf-8") as f:
        f.write("\n".join(xml))

    print(f"Total features: {total}")
    if patterns is not None:
        print(f"Matched features: {kept}")
    print(f"Created {output_file}")


if __name__ == "__main__":
    if len(sys.argv) == 3:
        geojson_to_fa5(sys.argv[1], sys.argv[2])

    elif len(sys.argv) == 4:
        geojson_to_fa5(sys.argv[1], sys.argv[2], sys.argv[3])

    else:
        print("Usage:")
        print("  python geo2fa5.py input.geojson output.fa5")
        print("  python geo2fa5.py input.geojson output.fa5 filter.txt")

3.3 Tee filtteritiedosto

  • Katso flyk-kartalta mitkä alueet haluat
  • Tee tiedosto, johon kirjoitat mitkä alueet käytetään (esim nimelle jamif.txt)

Esimerkki:

EFR.*NIINISALO.*
EFPO.*
EFTP.*
.*HUOVINRINNE.*
EFTU.*
.*PARKANO.*
EFHA.*
EFJY.*
EFSI.*
EFVA.*

3.4 Aja muunnos

  • aja muunnos komentoriviltä:
python geo2fa5.py fi26.geojson fi26.fa5 jamif.txt

3.5 Lataa FlyChart ohjelmalla

  • käynnistä Flychart ohjelma ja jatka kuten aiemmin FlyChart kanssa

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.