Similar Neighborhoods
Description
Interrogez les quartiers similaires en fonction des scores Local Logic et des caractéristiques démographiques.
Lorsqu'une configuration de back-end est fournie, les résultats sont limités par cette configuration afin que les quartiers similaires retournés puissent être restreints à ceux pertinents pour les utilisateurs du point de terminaison. La configuration de back-end transmettra également des liens et des URL de vignettes dans la réponse, et alimentera le SDK.
Calcul de la similarité des quartiers
Les quartiers retournés par Similar Neighborhoods (ou affichés sur le NeighborhoodMatchSDK) sont ceux ayant les scores de similarité les plus élevés qui se trouvent :
- dans la région métropolitaine du quartier source, lorsque celui-ci se situe dans une région métropolitaine définie
- dans un rayon de 100 kilomètres, lorsque le quartier source ne se situe pas dans une région métropolitaine définie
Pour la similarité des quartiers, le calcul est basé à la fois sur les données démographiques et sur les Location Scores de Local Logic :
- Démographie
- Densité de population
- Ménages avec enfants
- Type de logement
- Nombre de chambres
- Location Scores de Local Logic :
- Transport : Favorable au transport en commun, Favorable aux piétons, Favorable à l'automobile
- Services : Épiceries, Restaurants, Cafés, Magasinage, Vie nocturne
- Caractère : Dynamisme, Tranquillité
- Éducation : Écoles, Garderies
GET /v3/similar-neighborhoods/{geog_id}
Les valeurs acceptées pour geog_id sont de la forme g10_*, g20_*, g30_*, g32_*, g35_*, g37_* ou g38_*. Les autres valeurs entraîneront un code d'état 404 (non trouvé).
GET /v3/similar-neighborhoods/{geog_id}
En-tête
Cette API utilise l'authentification par jeton JWT. Ce jeton porteur (Bearer) JWT est ce qui est utilisé pour remplir
l'en-tête Authorization ci-dessous.
Les instructions pour récupérer ce jeton se trouvent dans Premiers pas.
| En-tête | Statut | Description |
|---|---|---|
| Authorization | requis | Votre jeton porteur récupéré depuis notre API d'autorisation, ex. Bearer eyJhbGci... |
| Accept | requis | Le type de données demandé; cette API retournera application/json. |
Paramètres de requête
| Parameter | Statut | Description |
|---|---|---|
| language | optionnel | La langue dans laquelle retourner les noms des quartiers. Valeurs acceptées : en, frPar défaut : en |
| limit | optionnel | Le nombre maximal d'éléments à retourner sous la clé most_similar. Maximum : 10 Par défaut : 5 |
| config_key | optionnel | Remplace la configuration client à utiliser. Définissez une chaîne vide pour n'utiliser aucune configuration. |
Exemples d'utilisation
- NodeJS
- Python
require('node-fetch')('https://api.locallogic.co/v3/similar-neighborhoods/g20_f25dyhf3"?' + new URLSearchParams({
}), {
method: 'GET',
headers: {
Accept: 'application/json',
Authorization: 'Bearer eyJhbGciOiJ...'
}
})
.then(response => response.json())
.then(body => {
console.log(body)
})
.catch(error => {
console.log(error)
})
import requests
response = requests.get(
"https://api.locallogic.co/v3/similar-neighborhoods/g20_f25dyhf3",
headers={
"Accept": "application/json",
"Authorization": "Bearer eyJhbGciOiJ..."
},
)
print(response.json())
Exemple de réponse
{
"data": {
"affordability": {
"apartments": {
"median_price": {
"currency": "USD",
"value": 387500.0
},
"raw_count": 57,
"weight": 0.11067961165048544
},
"houses": {
"median_price": {
"currency": "USD",
"value": 555000.0
},
"raw_count": 454,
"weight": 0.8815533980582524
},
"plexes": {
"median_price": {
"currency": "USD",
"value": 565920.0
},
"raw_count": 4,
"weight": 0.007766990291262136
}
},
"features": {
"households_with_children_percent": 12.549591126224591,
"population_density_km2": 0.41453746470034947,
"residents_apartments_percent": 0.0,
"residents_detatched_homes_percent": 77.55555555555556
},
"id": "g30_c28wnknk",
"most_similar": [
{
"affordability": {
"apartments": {
"median_price": {
"currency": "USD",
"value": 450000.0
},
"raw_count": 5,
"weight": 0.03067484662576687
},
"houses": {
"median_price": {
"currency": "USD",
"value": 350000.0
},
"raw_count": 158,
"weight": 0.9693251533742331
}
},
"centroid_distance_m": 24113,
"features": {
"households_with_children_percent": 19.593207688001492,
"population_density_km2": 0.3353790106818646,
"residents_apartments_percent": 0.0,
"residents_detatched_homes_percent": 89.13043478260869
},
"id": "g30_c28qxy01",
"name": "Point Roberts",
"scores": {
"car_friendly": 4.3151941862,
"groceries": 1.8888078633,
"pedestrian_friendly": 1.4768063996,
"quiet": 4.8382682385,
"restaurants": 1.9029849732
},
"similarity": 0.77446127
},
{
"affordability": {
"apartments": {
"median_price": {
"currency": "USD",
"value": 359900.0
},
"raw_count": 39,
"weight": 0.11079545454545454
},
"houses": {
"median_price": {
"currency": "USD",
"value": 562000.0
},
"raw_count": 313,
"weight": 0.8892045454545454
}
},
"centroid_distance_m": 36593,
"features": {
"households_with_children_percent": 29.85303123086344,
"population_density_km2": 0.6702550482305127,
"residents_apartments_percent": 5.66552755139866,
"residents_detatched_homes_percent": 93.68314801174228
},
"id": "g30_c29j0hed",
"name": "Sudden Valley",
"scores": {
"car_friendly": 4.6026688494,
"groceries": 0.0,
"pedestrian_friendly": 0.5148334311,
"quiet": 4.5573567538,
"restaurants": 0.9099096404
},
"similarity": 0.70634484
},
{
"affordability": {
"houses": {
"median_price": {
"currency": "USD",
"value": 1300000.0
},
"raw_count": 63,
"weight": 1.0
}
},
"centroid_distance_m": 27746,
"features": {
"households_with_children_percent": 25.70806100217865,
"population_density_km2": 0.34775378671541324,
"residents_apartments_percent": 0.0,
"residents_detatched_homes_percent": 100.0
},
"id": "g10_c28vh68v",
"name": "Edgemoor",
"scores": {
"car_friendly": 4.5486872212,
"groceries": 1.9398932457,
"pedestrian_friendly": 1.4222025882,
"quiet": 4.0891983428,
"restaurants": 1.7360640973
},
"similarity": 0.61963063
},
{
"affordability": {
"houses": {
"median_price": {
"currency": "USD",
"value": 475000.0
},
"raw_count": 7,
"weight": 1.0
}
},
"centroid_distance_m": 9431,
"features": {
"households_with_children_percent": 21.15655853314527,
"population_density_km2": 0.041122106110206724,
"residents_apartments_percent": 0.5641748942172,
"residents_detatched_homes_percent": 84.0620592383639
},
"id": "g30_c28y3286",
"name": "Custer",
"scores": {
"car_friendly": 4.9957842605,
"groceries": 0.0,
"pedestrian_friendly": 0.5,
"quiet": 3.4902238824,
"restaurants": 1.0282611011
},
"similarity": 0.60772216
},
{
"affordability": {
"houses": {
"median_price": {
"currency": "USD",
"value": 843736.0
},
"raw_count": 62,
"weight": 1.0
}
},
"centroid_distance_m": 30612,
"features": {
"households_with_children_percent": 25.26439482961222,
"population_density_km2": 0.4504609472887251,
"residents_apartments_percent": 0.0,
"residents_detatched_homes_percent": 84.86486486486487
},
"id": "g30_c28vq9c3",
"name": "Geneva",
"scores": {
"car_friendly": 4.5724320643,
"groceries": 1.3256155278,
"pedestrian_friendly": 0.9877577208,
"quiet": 4.1801797775,
"restaurants": 0.681860721
},
"similarity": 0.5479913
}
],
"name": "Birch Bay",
"scores": {
"car_friendly": 4.8927266271,
"groceries": 1.0325627363,
"pedestrian_friendly": 0.5975533574,
"quiet": 3.8888749441,
"restaurants": 0.8921594214
}
},
"meta": {
"message": "Successfully called v3/similar-neighborhoods API. No client configuration was applied. This is a Beta endpoint. Its interface can change without notice.",
"statusCode": 200,
"type": "LocalLogic.API.Success"
}
}
Implémentations SDK
Similar Neighborhoods est utilisé par un SDK Local Logic :
| SDK | Description |
|---|---|
| NeighborhoodMatch SDK | Récupère les quartiers configurés spécifiques au client ayant la similarité la plus élevée avec le quartier donné. |
Codes de réponse
Lorsque vous appelez l'API de Local Logic, vous pouvez recevoir un code de réponse HTTP indiquant une erreur ou une absence de données. Ces erreurs sont expliquées ci-dessous.
En général, les codes d'erreur commençant par « 4 » sont dus à un appel d'API invalide et peuvent être corrigés de votre côté, alors que les codes d'erreur commençant par « 5 » sont dus à des erreurs de serveur (c'est-à-dire des problèmes de notre côté). Si vous recevez quelque chose qui n'est pas décrit ici, veuillez communiquer avec nous à support@locallogic.co.
204 - No Content
Ce « code d'erreur » n'en est pas un et se produit lorsque nous n'avons pas les données requises pour un emplacement précis. Par exemple, si vous envoyez une paire lat/lng pour obtenir des scores dans des régions inhabitées du nord du Canada, nous pouvons retourner une réponse 204 vide, car nous reconnaissons l'emplacement, mais nous ne calculons pas de scores dans des endroits aussi éloignés, donc il n'y a rien à retourner.
400 - BadRequest
Ce code d'erreur se produit lorsque les données saisies dans la requête sont incorrectes. Utilisez le champ detail de la réponse pour obtenir des précisions. Exemple :
{
"code": "LocalLogic.API.BadRequest",
"detail": "ValidationErrors: AroundEndpoint is invalid:\n\tinclude is invalid: \"bad_input\" is not an acceptable value: \"groceries\", \"restaurants\", \"nightlife\", \"cafes\", \"shopping\", \"daycares\", \"primary_schools\", \"high_schools\""
}
401 - Unauthorized
Ce code d'erreur se produit lorsque votre clé API ne peut pas accéder à certaines ressources ou à certains emplacements. Par exemple, certaines clés API ne peuvent accéder qu'à certains pays, états ou provinces. N'hésitez pas à communiquer avec nous pour plus d'information.
{
"code": "LocalLogic.API.Unauthorized",
"detail": "Your API KEY doesn't support this region"
}
403 - Forbidden
Ce code d'erreur se produit lorsque vous avez oublié d'inclure les identifiants de sécurité dans votre requête ou lorsque vous demandez un paramètre auquel vous n'avez pas accès.
{
"message": "Forbidden"
}
404 - NotFound
Ce code d'erreur se produit lorsque nous n'avons pas de données pour l'emplacement demandé. Par exemple, si vous envoyez une paire lat/lng pour un emplacement en Antarctique, nous retournerons cette erreur, car nous n'avons pas (encore!) de données pour l'Antarctique.
{
"code": "LocalLogic.API.NotFound",
"detail": "No Location Scores found for this location."
}
422 - Unprocessable Entity
Ce code d'erreur est retourné lorsque les bons paramètres ont été envoyés, mais que les données qu'ils contiennent ne sont pas valides. Par exemple, si vous envoyez une paire lat/lng et que la latitude est invalide (c.-à-d. hors de la plage [-90, 90]) ou que la longitude est invalide (c.-à-d. hors de la plage [-180, 180]). Le message retourné expliquera le problème précis avec vos paramètres qui les rend invalides.
{
"message": "Latitude must be within [-90, 90], Longitude must be within [-180, 180], Requires at least lat/lng pair, or geography_ids. None supplied.",
"code": "LocalLogic.API.BadRequest",
"statusCode": 422
}
429 - Too Many Requests
Ce code d'erreur peut être retourné lorsque vous devez limiter le débit de vos requêtes. À l'interne, nous établissons des limites qui dépassent toutes les limites contractuelles pouvant entraîner le retour de ce code d'erreur. Si vous avez des questions ou si vous voyez cette erreur, veuillez communiquer avec nous à support@locallogic.co.
500 - ServerError
Ce code d'erreur signifie qu'une erreur s'est produite de notre côté. N'hésitez pas à réessayer la même requête pour voir si le problème persiste. Si vous recevez beaucoup de ces erreurs, veuillez communiquer avec nous à support@locallogic.co.
{
"code": "LocalLogic.API.ServerError",
"detail": "No Location Scores found for this location."
}
502 - BadGateway
Ce code d'erreur signifie qu'une erreur provient de notre fournisseur infonuagique. N'hésitez pas à réessayer la même requête pour voir si le problème persiste.
{
"message": "Internal server error"
}