Date spațiale
Acest ghid explică cum să lucrezi cu forme geografice, coordonate și buffere în API Qarta.
Sistem de coordonate
Toate coordonatele din Qarta trebuie să fie în format WGS84 (EPSG:4326):
- Longitudine (Est-Vest): -180 la +180
- Latitudine (Nord-Sud): -90 la +90
- Format:
[longitudine, latitudine](nu [latitudine, longitudine])
Important: Observă ordinea: longitudine mai întâi, apoi latitudine. Aceasta este ordinea standard GeoJSON.
Exemple
New York City: [-74.0060, 40.7128]
London, UK: [-0.1278, 51.5074]
Tokyo, Japan: [139.6917, 35.6895]
Sydney, Australia: [151.2093, -33.8688]
Forme GeoJSON
Qarta acceptă zone geografice ca obiecte GeoJSON Feature. Acestea definesc poligoane, puncte sau alte geometrii pentru interogări spațiale.
Formă poligon (cea mai frecventă)
Utilizează un poligon pentru a defini o zonă de interes:
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[-74.0200, 40.7000],
[-74.0000, 40.7000],
[-74.0000, 40.7300],
[-74.0200, 40.7300],
[-74.0200, 40.7000]
]
]
},
"properties": {}
}
Puncte cheie:
coordinateseste o matrice de inele (inel exterior + orificii opționale)- Fiecare inel este o matrice de coordonate
[longitudine, latitudine] - Prima și ultima coordonată trebuie să fie aceleași (închide poligonul)
- Minim 4 coordonate per inel (3 puncte unice + 1 punct de închidere)
MultiPolygon (zone multiple)
Definează zone multiple necontigue:
{
"type": "Feature",
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[[-74.0200, 40.7000], [-74.0000, 40.7000], [-74.0000, 40.7300], [-74.0200, 40.7300], [-74.0200, 40.7000]]
],
[
[[-73.9000, 40.7000], [-73.8800, 40.7000], [-73.8800, 40.7200], [-73.9000, 40.7200], [-73.9000, 40.7000]]
]
]
},
"properties": {}
}
Punct (locație singulară)
Pentru un singur punct (utilizat cu punctele finale buffer):
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-74.0060, 40.7128]
},
"properties": {}
}
Buffere
Un buffer este o zonă circulară în jurul unuia sau mai multor puncte centrale. Formele buffer utilizează un format dedicat (nu GeoJSON standard) cu obiecte de coordonate {lat, long}.
Format formă buffer
{
"type": "circle",
"coordinates": [
{ "lat": 40.7128, "long": -74.0060 }
],
"bufferStyle": "circle"
}
Proprietăți:
| Proprietate | Tip | Obligatoriu | Descriere |
|---|---|---|---|
type | șir | Da | Tip formă (de ex., "circle") |
coordinates | matrice de {lat, long} | Da | Puncte centrale pentru buffer |
bufferStyle | șir | Nu | Indiciu stil vizual (de ex., "circle") |
Matricea radiuses (distanțe în metri) este specificată separat la nivelul cererii, nu în interiorul obiectului formei.
{lat, long} — nu ordinea GeoJSONFormele buffer utilizează latitudine mai întâi în câmpurile de obiecte numite ({ "lat": ..., "long": ... }). Aceasta este diferită de coordonatele poligonului GeoJSON care utilizează ordinea matricei [longitudine, latitudine].
Exemple buffer
Rază unică (1 milă):
{
"shape": {
"type": "circle",
"coordinates": [{ "lat": 40.7128, "long": -74.0060 }]
},
"radiuses": [1609]
}
Raze multiple (inele concentrice):
{
"shape": {
"type": "circle",
"coordinates": [{ "lat": 40.7128, "long": -74.0060 }]
},
"radiuses": [1000, 5000, 10000, 20000]
}
Utilizarea formelor în cererile API
Puncte finale selecție
Utilizează forme cu puncte finale "selecție" pentru a găsi date în o zonă:
{
"source": "portfolio_01",
"shape": {
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [[[-74.0200, 40.7000], [-74.0000, 40.7000], [-74.0000, 40.7300], [-74.0200, 40.7300], [-74.0200, 40.7000]]]
},
"properties": {}
},
"filters": [{"field": "property_type", "value": "residential"}],
"properties": ["name", "value"]
}
Puncte finale buffer
Utilizează forme buffer cu puncte finale "selecție-buffer":
{
"source": "portfolio_01",
"shape": {
"type": "circle",
"coordinates": [{ "lat": 40.7128, "long": -74.0060 }]
},
"radiuses": [1000, 5000],
"filters": [{"field": "property_type", "value": "residential"}]
}
Precizie coordonate
Utilizează precizie corespunzătoare pentru cazul tău de utilizare:
| Precizie | Zecimale | Acuratețe |
|---|---|---|
| 1.0 | 1 | ~111 km |
| 0.1 | 1 | ~11 km |
| 0.01 | 2 | ~1.1 km |
| 0.001 | 3 | ~111 m |
| 0.0001 | 4 | ~11 m |
| 0.00001 | 5 | ~1.1 m |
Greșeli comune
❌ Coordonate inversate
// GREȘIT - latitudine mai întâi
"coordinates": [40.7128, -74.0060]
// CORECT - longitudine mai întâi
"coordinates": [-74.0060, 40.7128]
❌ Coordonată de închidere lipsă
// GREȘIT - poligon nu este închis
"coordinates": [[[-74.0200, 40.7000], [-74.0000, 40.7000], [-74.0000, 40.7300], [-74.0200, 40.7300]]]
// CORECT - prima și ultima coordonate sunt aceleași
"coordinates": [[[-74.0200, 40.7000], [-74.0000, 40.7000], [-74.0000, 40.7300], [-74.0200, 40.7300], [-74.0200, 40.7000]]]
❌ Sistem de referință de coordonate greșit
// GREȘIT - coordonate UTM
"coordinates": [475703, 4505727]
// CORECT - WGS84/EPSG:4326
"coordinates": [-74.0060, 40.7128]
Instrumente pentru crearea formelor
Web-based
- Mapbox Draw (https://mapbox.com/mapbox-gl-draw/) - Creează forme pe o hartă
- GeoJSON.io (https://geojson.io/) - Editor GeoJSON vizual
- Google Maps - Desenează forme, exportă ca coordonate
Programatic
JavaScript/Leaflet:
const shape = {
type: "Feature",
geometry: {
type: "Polygon",
coordinates: [[[lng1, lat1], [lng2, lat2], [lng3, lat3], [lng1, lat1]]]
},
properties: {}
};
Validare forme
Înainte de a trimite forme la Qarta, validează-le:
Validator online: https://geojson.io/
Python:
from shapely.geometry import shape
def is_valid_geojson(feature):
try:
geom = shape(feature['geometry'])
return geom.is_valid
except:
return False
Considerații de performanță
- Forme mai mici au performanță mai bună decât poligoane foarte mari
- Fewer radiuses în buffere returnează rezultate mai repede
- Coordonate precise nu afectează performanța (4-5 zecimale este bine)
- Poligoanele complexe cu multe vârfuri pot fi mai lente
Mesaje de eroare
"Invalid shape geometry"
Cauză: GeoJSON malformat
Soluție:
- Validează sintaxa JSON cu validator JSON
- Verifică poligonul este închis (primul = ultima coordonată)
- Verifică coordonatele sunt
[longitudine, latitudine]
"403 Forbidden" pe parametrul shape
Cauză: Interval de coordonate nevalid sau tip geometrie
Soluție:
- Verifică coordonatele sunt în interval WGS84 (-180 la 180 longitudine, -90 la 90 latitudine)
- Verifică utilizezi tip geometrie suportată (Polygon, MultiPolygon, Point)
- Asigură-te că toate coordonatele interioare sunt matrice corect imbricată
Pași următori
- Ghid export CSV - Exportă rezultate ca CSV
- Ghid V1 vs V2 - Înțelegere diferențe filtre
- Cazuri de utilizare - Exemple din lumea reală cu forme
- Colecție Postman - Răsfoiește toate punctele finale