Îmbogățire punct
Acest caz de utilizare arată cum să îmbogățești locații individuale sau în batch cu date strat geospatial.
Folosești Python?
SDK-ul Python avvolează puncte finale îmbogățire într-un client tipizat — client.enrichment.enrich_single(...) și client.enrichment.enrich_batch(...).
Scenariu
Ai o listă de adrese sau coordonate și trebuie să:
- Îmbogățești fiecare punct cu informații strat geospatial (riscuri inundații, demografie, etc.)
- Recuperezi atribute specifice sau metrici agregate
- Procesezi puncte singulare sau loturi mari eficient
Îmbogățire punct singular
Îmbogățește o locație unică cu date strat:
curl -X GET "https://graph.quarticle.ro/graph/featureinfo/risk-lookup/api/v1/bfi/single" \
-H "Authorization: YOUR_API_KEY" \
--data-urlencode "lat=40.7128" \
--data-urlencode "lng=-74.0060" \
--data-urlencode "layers=flood_risk,demographic_density,environmental_quality" \
--data-urlencode "operation=enhance"
Parametri:
lat- Latitudine (WGS84)lng- Longitudine (WGS84)layers- Nume straturi separate prin virgulăoperation-enhancepentru obține atribute,countpentru numără caracteristici
Răspuns:
{
"location": {"lat": 40.7128, "lng": -74.0060},
"layers": {
"flood_risk": {
"risk_level": "medium",
"return_period": "100_year",
"depth_cm": 45
},
"demographic_density": {
"population": 42500,
"density_per_sq_km": 15800
}
}
}
Îmbogățire puncte batch
Îmbogățește mai multe puncte în o singură cerere:
{
"points": [
{"id": "prop_001", "lat": 40.7128, "lng": -74.0060},
{"id": "prop_002", "lat": 40.7250, "lng": -74.0100},
{"id": "prop_003", "lat": 40.7400, "lng": -74.0050}
],
"layers": ["flood_risk", "seismic_risk", "demographic_density"],
"operation": "enhance"
}
Răspuns:
[
{
"id": "prop_001",
"location": {"lat": 40.7128, "lng": -74.0060},
"enrichment": {
"flood_risk": {...},
"seismic_risk": {...},
"demographic_density": {...}
}
}
]
Exemple cod
Punct singular (JavaScript)
async function enrichSinglePoint(lat, lng, layers) {
const apiKey = process.env.QARTA_API_KEY;
const params = new URLSearchParams({
lat: lat,
lng: lng,
layers: layers.join(','),
operation: 'enhance'
});
const response = await fetch(
`https://graph.quarticle.ro/graph/featureinfo/risk-lookup/api/v1/bfi/single?${params}`,
{
method: 'GET',
headers: {
'Authorization': `${apiKey}`
}
}
);
const enriched = await response.json();
console.log(JSON.stringify(enriched, null, 2));
return enriched;
}
// Utilizare
const result = await enrichSinglePoint(
40.7128,
-74.0060,
['flood_risk', 'demographic_density', 'environmental_quality']
);
Îmbogățire batch (JavaScript)
async function enrichBatchPoints(properties, layers) {
const apiKey = process.env.QARTA_API_KEY;
const request = {
points: properties.map(p => ({
id: p.id,
lat: p.latitude,
lng: p.longitude
})),
layers: layers,
operation: 'enhance'
};
const response = await fetch(
'https://graph.quarticle.ro/graph/featureinfo/enrichment/api/v1/bfi/batch',
{
method: 'POST',
headers: {
'Authorization': `${apiKey}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(request)
}
);
const enriched = await response.json();
enriched.forEach(item => {
console.log(`${item.id}: Enriched with ${Object.keys(item.enrichment).length} layers`);
});
return enriched;
}
// Utilizare
const properties = [
{ id: 'prop_001', latitude: 40.7128, longitude: -74.0060 },
{ id: 'prop_002', latitude: 40.7250, longitude: -74.0100 }
];
const enriched = await enrichBatchPoints(
properties,
['flood_risk', 'seismic_risk', 'demographic_density']
);
Îmbogățire batch din CSV (Python)
import requests
import json
import csv
def enrich_properties_from_csv(csv_file, output_file):
api_key = os.getenv('QARTA_API_KEY')
# Citește CSV
properties = []
with open(csv_file, 'r') as f:
reader = csv.DictReader(f)
for row in reader:
properties.append({
'id': row['property_id'],
'latitude': float(row['lat']),
'longitude': float(row['lon'])
})
# Îmbogățire batch
request_body = {
'points': [
{'id': p['id'], 'lat': p['latitude'], 'lng': p['longitude']}
for p in properties
],
'layers': ['flood_risk', 'demographic_density'],
'operation': 'enhance'
}
response = requests.post(
'https://graph.quarticle.ro/graph/featureinfo/enrichment/api/v1/bfi/batch',
headers={
'Authorization': f'{api_key}',
'Content-Type': 'application/json'
},
json=request_body
)
enriched_data = response.json()
# Scrie rezultate în fișier
with open(output_file, 'w') as f:
json.dump(enriched_data, f, indent=2)
print(f'Enriched {len(enriched_data)} properties')
# Utilizare
enrich_properties_from_csv('properties.csv', 'enriched_properties.json')
Operație numărare
În loc de îmbogățire, numără caracteristici în straturi:
curl -X GET "https://graph.quarticle.ro/graph/featureinfo/risk-lookup/api/v1/bfi/single" \
-H "Authorization: YOUR_API_KEY" \
--data-urlencode "lat=40.7128" \
--data-urlencode "lng=-74.0060" \
--data-urlencode "layers=flood_zones,environmental_areas" \
--data-urlencode "operation=count"
Procesare loturi mari
Pentru mii de puncte, procesează în loturi mai mici:
async function enrichLargeDataset(properties, batchSize = 1000) {
const apiKey = process.env.QARTA_API_KEY;
const results = [];
for (let i = 0; i < properties.length; i += batchSize) {
const batch = properties.slice(i, i + batchSize);
console.log(`Processing batch ${Math.floor(i / batchSize) + 1}...`);
const request = {
points: batch.map(p => ({
id: p.id,
lat: p.lat,
lng: p.lng
})),
layers: ['flood_risk', 'demographic_density'],
operation: 'enhance'
};
const response = await fetch(
'https://graph.quarticle.ro/graph/featureinfo/enrichment/api/v1/bfi/batch',
{
method: 'POST',
headers: {
'Authorization': `${apiKey}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(request)
}
);
const enriched = await response.json();
results.push(...enriched);
// Adaugă întârziere între loturi
await new Promise(resolve => setTimeout(resolve, 500));
}
return results;
}
const allProperties = [...]; // Lista de 10,000+ proprietăți
const enriched = await enrichLargeDataset(allProperties, 1000);
Cazuri de utilizare
- Evaluare proprietăți - Încorporează date riscuri/demografie în modele prețuri
- Screening investiții - Filtrează proprietăți după atribute îmbogățite
- Evaluare riscuri asigurare - Evaluează riscuri de mediu și catastrofe naturale
- Analiză marketing - Țintă proprietăți în zone demografice specifice
- Îmbogățire portofoliu - Adaugă date context la înregistrări proprietăți
- Due diligence - Evaluează mai multe locații rapid
Gestionare erori
async function enrichWithErrorHandling(lat, lng, layers) {
try {
const params = new URLSearchParams({
lat, lng,
layers: layers.join(','),
operation: 'enhance'
});
const response = await fetch(
`https://graph.quarticle.ro/graph/featureinfo/risk-lookup/api/v1/bfi/single?${params}`,
{ headers: { 'Authorization': `${apiKey}` } }
);
if (response.status === 400) {
console.error('Invalid coordinates or layers');
return null;
}
if (response.status === 401) {
console.error('Authentication failed');
return null;
}
return await response.json();
} catch (error) {
console.error('Enrichment failed:', error);
return null;
}
}
Pași următori
- Caz de utilizare raportare riscuri - Generează rapoarte evaluare riscuri
- Caz de utilizare analiză portofoliu - Analizează date portofoliu
- Ghid date spațiale - Lucru cu coordonate