add local mapbox script, update objects

This commit is contained in:
Tykayn 2025-06-04 00:16:56 +02:00 committed by tykayn
parent c6e05463b1
commit b1f6433b7d
13 changed files with 309 additions and 182 deletions

View file

@ -85,6 +85,12 @@ class Place
#[ORM\Column(nullable: true)]
private ?\DateTime $displayed_date = null;
#[ORM\Column(nullable: true)]
private ?int $lat = null;
#[ORM\Column(nullable: true)]
private ?int $lon = null;
public function getMainTag(): ?string
{
return $this->main_tag;
@ -120,15 +126,36 @@ class Place
}
return round($filled_fields / $total_fields * 100);
}
public function guess_main_tag(array $tags_converted) {
$main_tag = null;
if (isset($tags_converted['amenity']) && $tags_converted['amenity'] != '') {
$main_tag = 'amenity='.$tags_converted['amenity'];
}
if (isset($tags_converted['shop']) && $tags_converted['shop'] != '') {
$main_tag = 'shop='.$tags_converted['shop'];
}
if (isset($tags_converted['tourism']) && $tags_converted['tourism'] != '') {
$main_tag = 'tourism='.$tags_converted['tourism'];
}
if (isset($tags_converted['office']) && $tags_converted['office'] != '') {
$main_tag = 'office='.$tags_converted['office'];
}
if (isset($tags_converted['healthcare']) && $tags_converted['healthcare'] != '') {
$main_tag = 'healthcare='.$tags_converted['healthcare'];
}
return $main_tag;
}
/**
* mettre à jour le lieu selon les tags osm
*/
public function update_place_from_overpass_data(array $overpass_data) {
if ( ! isset($overpass_data['tags']) || $overpass_data['tags'] == null) {
if ( ! isset($overpass_data['tags']) || $overpass_data['tags'] == null) {
return;
}
// var_dump($overpass_data);
$orignal_overpass_data = $overpass_data;
$overpass_data = array_merge([
'id' => '',
'type' => '',
@ -142,61 +169,35 @@ class Place
'wheelchair' => '',
'note' => ''
], $overpass_data['tags'] );
// var_dump($overpass_data);
if (isset($tags_converted['amenity']) && $tags_converted['amenity'] != '') {
$this->setMainTag('amenity='.$tags_converted['amenity']);
}
if (isset($tags_converted['shop']) && $tags_converted['shop'] != '') {
$this->setMainTag('shop='.$tags_converted['shop']);
}
if (isset($tags_converted['tourism']) && $tags_converted['tourism'] != '') {
$this->setMainTag('tourism='.$tags_converted['tourism']);
}
if (isset($tags_converted['office']) && $tags_converted['office'] != '') {
$this->setMainTag('office='.$tags_converted['office']);
}
if (isset($tags_converted['healthcare']) && $tags_converted['healthcare'] != '') {
$this->setMainTag('healthcare='.$tags_converted['healthcare']);
}
$main_tag = $this->guess_main_tag($orignal_overpass_data['tags']);
if($main_tag){
$this->setMainTag($main_tag);
}
$this
// ->setOsmId($overpass_data['id'])
// ->setOsmKind($overpass_data['type'] )
->setOsmId( $orignal_overpass_data['id'])
->setOsmKind($orignal_overpass_data['type'] )
->setLat($orignal_overpass_data['lat'])
->setLon($orignal_overpass_data['lon'])
->setName(isset($overpass_data['name']) && $overpass_data['name'] != '' ? $overpass_data['name'] : null);
if (isset($overpass_data['postcode']) && $overpass_data['postcode'] != ''){
$this->setZipCode($overpass_data['postcode']);
}
if (isset($overpass_data['email']) && $overpass_data['email'] != ''){
$this->setEmail($overpass_data['email']);
}
if (isset($overpass_data['tags']['opening_hours']) && $overpass_data['opening_hours'] != ''){
$this->setHasOpeningHours($overpass_data['opening_hours']);
}
if (isset($overpass_data['tags']) && isset($overpass_data['tags']['note']) && $overpass_data['tags']['note'] != ''){
$this->setNote($overpass_data['tags']['note']);
}
if (isset($overpass_data['tags']) && isset($overpass_data['tags']['addr:housenumber']) && $overpass_data['tags']['addr:housenumber'] != ''){
$this->setHasAddress($overpass_data['tags']['addr:housenumber']);
}
if (isset($overpass_data['tags']) && isset($overpass_data['tags']['website']) && $overpass_data['tags']['website'] != ''){
$this->setHasWebsite($overpass_data['tags']['website']);
}
if (isset($overpass_data['tags']) && isset($overpass_data['tags']['wheelchair']) && $overpass_data['tags']['wheelchair'] != ''){
$this->setHasWheelchair($overpass_data['tags']['wheelchair']);
}
if (isset($overpass_data['tags']) && isset($overpass_data['tags']['note']) && $overpass_data['tags']['note'] != ''){
$this->setHasNote($overpass_data['tags']['note']);
}
if (isset($overpass_data['tags']) && isset($overpass_data['tags']['note']) && $overpass_data['tags']['note'] != ''){
$this->setHasNote($overpass_data['tags']['note']);
$this->setNoteContent($overpass_data['tags']['note']);
}
$mapping = [
['key' => 'postcode', 'setter' => 'setZipCode', 'source' => $overpass_data],
['key' => 'email', 'setter' => 'setEmail', 'source' => $overpass_data],
['key' => 'opening_hours', 'setter' => 'setHasOpeningHours', 'source' => $overpass_data['tags'] ?? []],
['key' => 'note', 'setter' => 'setNote', 'source' => $overpass_data['tags'] ?? []],
['key' => 'addr:housenumber', 'setter' => 'setHasAddress', 'source' => $overpass_data['tags'] ?? []],
['key' => 'website', 'setter' => 'setHasWebsite', 'source' => $overpass_data['tags'] ?? []],
['key' => 'wheelchair', 'setter' => 'setHasWheelchair', 'source' => $overpass_data['tags'] ?? []],
['key' => 'note', 'setter' => 'setHasNote', 'source' => $overpass_data['tags'] ?? []],
];
// Remplir les clés attendues avec des valeurs par défaut si non définies
foreach ($mapping as $map) {
if (isset($map['source'][$map['key']]) && $map['source'][$map['key']] !== '') {
$this->{$map['setter']}($map['source'][$map['key']]);
}
}
$this
// ->setOsmId($overpass_data['id'])
@ -506,4 +507,28 @@ class Place
return $this;
}
public function getLat(): ?int
{
return $this->lat;
}
public function setLat(?int $lat): static
{
$this->lat = $lat;
return $this;
}
public function getLon(): ?int
{
return $this->lon;
}
public function setLon(?int $lon): static
{
$this->lon = $lon;
return $this;
}
}