hallo oelepoteo und elnino460 - vielen dank für eure Beiträge.
Was spricht denn für einzelne Tabellen? Wenn die Unterscheidung lediglich die Kategorisierung ist könntest Du ja auch einfach mit Filter und dergleichen arbeiten.
oelepoteo - ja das ist eine Idee. Eine große Tabelle wäre ja im Grunde auch eine Moeglichkeit: mit einer Spalte die den Typ der Daten indiziert -(siehe unten) (1=hospital, 2=bäckerei, 3=etc, 4= etx)
und eine zweite Tabelle die die typen und die Anzahl der Typen speichert.
danke elnino460 für deine Antwort.
Entweder wie mein Vorredner schon sagte in eine Tabelle packen oder über mehrere Konsolidierungsbereiche zu einer Pivottabelle zusammenführen, dann kann man filtern. Am besten den PivotTable Assisenten benutzen (falls nicht sichtbar dann über Datei -> Optionen -> Menüband anpassen und irgendwo hinzufügen), und dann bei Schritt 1 mehrere Konsolidierungsbereiche auswählen. Die jeweiligen Spalten in allen Dateien hinzufügen und schon hast du die Pivot.
Mit einer Formel wird das zwar auch irgendwo möglich sein, ist aber sehr unschön. Die mehreren Arbeitsblätter wären da gar nicht das Problem, sondern eher dass du einen dynamischen Array zurückerhältst. Und das ist mit Excel nicht so schön zu lösen ^^
...das mit den Pivot-Tabellen leuchtet ein: Es ginge ja theoretisch auch eine Suchfunktion über mehrere Tabellen-Blättern mit VBS Script in Excel doch dann aber dürfte die Datei dann vermutlich wieder nur mit Excel funktionieren.
man könnte auch eine Tabelle erstellen - und dann Filter für die Spalten - also eine Tabelle in der man noch die Kategorien
a. type
b. lon lat /(gps-daten eben) einfügt
dann kannst du in der gps-daten-spalte nach den Eingaben filtern. Ist ggf. halt am einfachsten und funktioniert dann auch in Calc - nicht nur in Excel, Excel-Online, Excel App, Google Tabellen und Apple Numbers.
also ich denke, dass dann die Tabelle ja so aussehen koennte:
Code:
vgl dies Angaben etwa:
@id @type @lon @lat name addr:postcode addr:city addr:street addr:housenumber contact:website contact:email=*
35332685 hosp -43.9485880 -19.8175998 Hospital Risoleta Tolentino Neves Belo Horizonte Rua das Gabirobas 1
35332689 hosp -43.9518360 -19.9178800 Prontocor Rio
53254282 hosp -43.9319894 -19.9260406 Hospital Semper Rio
75600076 hosp -43.9590472 -19.9505820 Hospital Luxemburgo Rio
78719634 hosp -43.9528392 -19.9239539 Hospital Vera Cruz Belo Horizonte Avenida Barbacena 653
..[...]....
74400076 Backery -43.9590472 -19.9455820 French Baguette Rio
72219634 School -43.9590472 -19.8885820 Paulo Freire-School Rio Rio
etc. etx.
by the way: Also es ist so: ich habe die Daten gewonnen über openstreetmap und gespeichert in einer Tabelle - kann dazu aber natürlich auch MySQL oder sqlite verwenden By the way: das soll für eine Webanwendung verwendet werden:
also: wenn man einen Punkt hat - also nehmen wir zum Beispiel den Berliner Aleanderplatz:
Code:
DD COORDINATES; 52.519664588 13.407998368
DMS COORDINATES; 52°31'10.79" N 13°24'28.79" E
die o.g. Daten die die Tabellen betreffen die könnte ich auch über die Overpass API jeweils direkt abfragen:
https://wiki.openstreetmap.org/wiki/Overpass_API Vorerst dachte ich, ohne OSM Kartendarstellung zu arbeiten und lediglich eine Tabellarische Suche zu ermoeglichen. Die Abfrage via Overpass-Api liesse sich m.E. ja auch direkt im Webfrontent einrichten und umsetzen lassen.
also - sagen wir es sind die Tabellen wie folgt:
dataset_1_ Kliniken / hospital (hosp)
dataset_2_ Bäckereien
dataset_3_ Milchläden
dataset_4_ Schuhläden
dataset_5_ schulen
Vorerst jedoch will ich die
Daten also lokal speichern (jeder Datensatz hat eine eindeutige ID) und nebenbei bemerkt auch noch den Timestamp mitführen, an dem der Datensatz zum letzten mal aktualisiert wurde.
zu der Umsetzung via Abfrage am OSM-Endpoint: hier kann man auch Overpass verwenden - für die Abfrage von POI; Da hierbei aufgrund der Unterschiede zwischen den POIs keine Homogenisierung möglich ist speichere ich
- den POI mit seinen Koordinaten in einen Table (poiID, lat, lng).
- Die Attribute speichere ich in einen extra Table (poiID, attr_name, attr_val).
damit habe ich die Daten relational abgebildet, kann sie aber nach Bedarf auch nonrelational abfragen und aus dem Backend als JSON ins Frontend übergeben. Ich kann auch die Attribut-Werte (attr_val) unabhängig vom Feldnamen durchsuchen. Mit den passenden Indizes funktioniert das performant und problemlos.
....also wenn ich 2 Datensätze habe....- hier zum Beispiel bezogen auf "Schulen"
einmal die Schule mit lon, lat
Code:
@id @type lon:, lat:
268915924 node,
name max müller Schule
bzw - man kann das auch so umsezten - wenn man das nearby - thema komplett in einer OSM-Streetmap-Lsg. abbilden wollte.
Code:
[out:json][timeout:25];
nwr(around:10000,40.40,-79.93)["amenity"="hospital"];
out center;
wie oben aber beschrieben wollte ich zunächst mit Tabellen arbeiten - und eine tabellarische Lsg ergo zunächst mal ins Auge fassen..
oelepoteo und elnino460 - vielen dank nochmals für eure Beiträge.
euch noch einen schoenen Sonntag
ps:
nachtrag:
- mit OSM sind viele dieser Lösungen moeglich. Ich allerdings würde sehr gern mit den Tabellen arbeiten - also gewissermaßen mit den "Abzügen" die ich aus OSM Abfragen gewonnen habe und die lokal gespeichert sind...
also: wenn man einen Punkt hat - also nehmen wir zum Beispiel den Berliner Aleanderplatz:
Code:
DD COORDINATES; 52.519664588 13.407998368
DMS COORDINATES; 52°31'10.79" N 13°24'28.79" E
hier die diesbezügliche Abfrage:
Code:
[out:csv(::id,::type,::lon, ::lat, "name","addr:postcode","addr:city","addr:street","addr:housenumber","contact:website"," contact:email=*")][timeout:600];
nwr(around:10000,52.519664588 13.407998368)["amenity"="hospital"];
out center;
und hier der Datenstatz für die Resultate - in 10 km distanz rund um den Alex in Berlin - für Hospitäler..:
Code:
@id @type @lon @lat name addr:postcode addr:city addr:street addr:housenumber contact:website contact:email=*
775745348 node 13.3640559 52.5037269 Evangelische Elisabeth Klinik 10785 Berlin Lützowstraße 24-26
1257340412 node 13.3717015 52.4778100 Klinik für Kinder- und Jugendmedizin
4610129 way 13.3703633 52.5554121 Jüdisches Krankenhaus Berlin 13347 Berlin Heinz-Galinski-Straße 1
4637750 way 13.3752301 52.5573670 DRK Kliniken Berlin | Mitte
4750929 way 13.3428630 52.5421508 Charité Campus Virchow Klinikum
24054786 way 13.3967186 52.5260055 St. Hedwig-Krankenhaus 10115 Berlin Große Hamburger Straße 5-11 http://www.alexianer-berlin-hedwigkliniken.de/st_hedwig_krankenhaus
24931203 way 13.3713474 52.5356575 Bundeswehrkrankenhaus Berlin 10115 Berlin Scharnhorststraße 13
32424425 way 13.3465511 52.4620791 Auguste-Viktoria-Klinikum 12157 Berlin Rubensstraße 125
41447057 way 13.4297195 52.5406155 "Vivantes Klinikum im Friedrichshain, Standort Prenzlauer Berg" Fröbelstraße 15
46839073 way 13.4954295 52.5133024 Sana Klinikum Lichtenberg 10365 Berlin Fanningerstraße 32 https://www.sana-kl.de/
48992251 way 13.3902674 52.4590154 Vivantes Wenckebach-Klinikum 12099 Berlin Wenckebachstraße 23
49876720 way 13.5095722 52.5280791 Evangelisches Krankenhaus Königin Elisabeth Herzberge 10365 Berlin Herzbergstraße 79 https://www.keh-berlin.de/
53038853 way 13.2772940 52.5202588 DRK Kliniken Westend 14050 Berlin Spandauer Damm 130
93478285 way 13.2814545 52.4792516 Klinik am Roseneck
99146927 way 13.4141205 52.5709842 Maria Heimsuchung Caritas Klinikum Pankow
114201147 way 13.2897238 52.5222616 Schlosspark-Klinik 14059 Berlin Heubnerweg 2 http://www.schlosspark-klinik.de
119398219 way 13.3172076 52.4803471 Sankt Gertrauden-Krankenhaus 10713 Berlin Paretzer Straße 12 http://www.sankt-gertrauden.de
132056990 way 13.2918016 52.4904830 Martin-Luther-Krankenhaus 14193 Berlin Caspar-Theyß-Straße 27-31 http://www.pgdiakonie.de/martin-luther-krankenhaus
137033906 way 13.3637902 52.5545152 Evangelisches Geriatriezentrum Berlin 13347 Berlin Reinickendorfer Straße 61
138144499 way 13.4578379 52.4343190 Ida-Wolff-Krankenhaus 12351 Berlin Juchaczweg 21
138150297 way 13.4589236 52.4372389 Vivantes Klinikum - Neukölln 12351 Berlin Rudower Straße 48
168967363 way 13.3729563 52.4781040 St. Joseph Krankenhaus 12101 Berlin Wüsthoffstraße 15
229099728 way 13.3297666 52.4896219 Friedrich von Bodelschwingh-Klinik
305989452 way 13.4085942 52.4939881 Vivantes Klinikum am Urban 10967 Berlin Dieffenbachstraße 1 http://www.vivantes.de/kau
326445437 way 13.3283008 52.5830005 Krankenhaus des Maßregelvollzugs Berlin (KMV) 13403 Berlin Olbendorfer Weg 70
326448280 way 13.3274384 52.5812119 Vivantes Humboldt-Klinikum - Standort Oranienburger Straße 13437 Berlin Oranienburger Straße 285
378933899 way 13.4507369 52.5554951 Park Klinik Weißensee
391245035 way 13.3878055 52.5350773 Lazarus-Kranken- und Diakonissenhaus
567540939 way 13.4691308 52.5505504 Alexianer St. Joseph Krankenhaus Berlin-Weißensee
583306346 way 13.3778632 52.5257624 Charité Universitätsmedizin Berlin
700483283 way 13.4394766 52.5255323 Klinikum im Friedrichshain 10249 Berlin Landsberger Allee 49 https://www.vivantes.de/fuer-sie-vor-ort/klinikum-im-friedrichshain-landsberger-allee/
7715945 relation 13.3452165 52.5060328 Franziskus-Krankenhaus Berlin 10787 Berlin Budapester Straße 15-19 http://www.franziskus-berlin.de
wir sehen also;- mit OSM sind viele dieser Lösungen moeglich.
Ich allerdings würde sehr gern mit den Tabellen arbeiten - also gewissermaßen mit den "Abzügen",
die ich aus OSM Abfragen gewonnen habe und die lokal gespeichert sind...
man kann nämlich in den Tabellen auch schön browsen - und das hätte m.E. auch einige Vorzüge. Was meint ihr denn!?
vgl. z.b. eine demo:
https://tablepress.org/demo/
nebenbei: eine Abfrage nach Distanzen - die ging ggf. auch mit
Aloglia-API
Code:
2598851386 node 11.4735866 48.0912428 nursing_home "Seniorenzentrum ""Marie-Anne Clauss""" München Luganoweg 8 https://www.asb-casa-vital.de/muenchen.html
2685212812 node 11.5454459 48.0735744 kindergarten Hänsel und Gretel 81545 München Wunderhornstraße 7b
2696585853 node 11.6572337 48.0789303 school Musikschule Neubiberg
2960337347 node 11.6989158 48.1164575 kindergarten Allegro Private Vorschule 81827 München Dompfaffweg 10
3345528112 node 11.7017383 48.1213520 kindergarten Gemeindekindergarten Gronsdorf 85540 Haar Sofienstraße 4
3345528113 node 11.7156962 48.1081492 kindergarten Kinderhaus 85540 Haar Hans-Pinsel-Straße 9b
4476584953 node 11.5148195 48.0654931 kindergarten Kinderhaus St. Gabriel Nord http://www.kinderhaus.st.gabrielsolln.de/
4670738346 node 11.5144853 48.0643890 kindergarten Klosterfrösche http://www.klosterfroesche.de
4670738347 node 11.5152132 48.0646958 kindergarten Klosterspatzen https://klosterspatzen.de/
4670738348 node 11.5147286 48.0648090 kindergarten Kinderhaus St. Gabriel Süd http://www.kinderhaus.st.gabrielsolln.de/
man könnte hier auch 'aroundRadius' verwenden:
'aroundRadius' und 'aroundLatLng' - die hierfür notwendigen Daten hab ich ja in dem Datensatz.
Code:
this.index.search(query,{
filters: filters,
aroundLatLng: location,
aroundRadius: radius
}).then((data) => {
console.log(data);
})
Ich habe hier diese
man-pages gefunden
https://www.algolia.com/doc/guides/...lter-results-around-a-location/?client=python
Filter Results Around a Location
Code:
[
{
"objectID": "3797",
"name": "John F Kennedy Intl",
"city": "New York",
"country": "United States",
"iata_code": "JFK",
"_geoloc": {
"lat": 40.639751,
"lng": -73.778925
},
"links_count": 911
}
]
To tell Algolia where each record is located, we need to have the latitude and longitude stored in the _geoloc attribute. You can download the dataset here. Have look at how to import it in Algolia here.
Code:
Initialize the client#
from algoliasearch.search_client import SearchClient
client = SearchClient.create('YourApplicationID', 'YourAdminAPIKey')
index = client.init_index('your_index_name')
Configure Index Settings#
Even if we want to sort by distance to a location we need the textual relevance to be good in case refine the search with a query.
For that lets configure the index.
Code:
index.set_settings(
searchableAttributes: [
'name',
'city',
'country',
'iata_code'
],
customRanking: [
'desc(links_count)'
]
)
Searchable attributes#
We’re going to search in our 4 textual attributes: name, city, country and iata_code.
Custom Ranking#
Lets use the number of other connected airports to any airport as a ranking metric. The more connection the better.
Ranking#
When filtering around a location, Algolia can also sort the results by distance from this location.
The sorting by distance happens in the criterion geo of the ranking formula. If you don’t have this criterion active, you cannot sort by distance.
Filtering around a given location#
Let’s filter airports around New York City. New York City has a latitude of 40.71 and a longitude of -74.01.
We are going to use the aroundLatLng parameter.
Code:
results = index.search('', {
'aroundLatLng': '40.71, -74.01'
})
vgl auch hier:
https://www.algolia.com/doc/guides/...lter-results-around-a-location/?client=python