ProjINF Geo Business Modell Engineering Omar Abada† , Thorsten Ohler‡ , Ilhan Tas∗ Abstract— Im Rahmen eines Forschungsprojekts an der Universität Stuttgart in Kooperation mit dem Fraunhofer-Institut für Arbeitswirtschaft und Organisation (IAO) wurde für die Initiative [Innovationsnetzwerk Morgenstadt] der Fraunhofer Gesellschaft ein Softwaresystem in Form einer Desktop-Anwendung entwickelt. Ziel dieser Plattform ist dabei eine effiziente Analyse des Standorts bezüglich der für eine Dienstleistung erfolgversprechenden Kriterien im Hinblick auf ihre Existenz beziehungsweise Nichtexistenz für die Abgabe einer Prognose zu den wirtschaftlichen Erfolgsaussichten. Hierbei erfolgt die Prognose auf der Grundlage der Auswertung von öffentlich zur Verfügung stehenden Daten, sowie Sensordaten, die über eine mobile Anwendung erfasst werden. Infolge der Abwesenheit einer solchen Anwendung, wurden die Sensordaten auf Basis vorhandener Daten realistisch simuliert. Die verschiedenen Datensätze werden aufgrund ihrer Relevanz für die jeweilige Dienstleistung gewichtet. Die Ergebnisse der Auswertung werden visuell dargestellt. Ferner bietet die Anwendung die Möglichkeit der Suche eines idealen Standorts in einer eingegebenen Umgebung. Als Testumgebung wurde das Zentrum der Stadt Stuttgart ausgewählt, sowie als Anwendungsfälle vier Dienstleistungen. Der modulare Aufbau der Software ermöglicht jederzeit eine leichte Erweiterung der Menge der Dienstleistungen. Index Terms—Standortanalyse, automasierte Standortbestimmung, Dienstleistungen, Sensordaten, Big Data, Stadtsysteme 1 E INLEITUNG UND M OTIVATION ermöglichen. Der Anteil der in der Stadt lebenden Weltbevölkerung hat im Jahr 2007 die 50% Marke überschritten. Schätzungen zufolge wird dieser Wert in den nächsten Jahrzehnten bereits 70% betragen1 . Gegenwärtige Konzepte, welche in Kapitel 3 näher erläutert werden, scheiden im Hinblick auf die Komplexität der Standortproblematik in der Stadt von Morgen2 als Lösungsweg aus. Dienstleistungen prägen das Bild einer Stadt und stellen einen enormen wirtschaftlichen Faktor dar. Ihre effiziente Ansiedlung ist aufgrund der zu erwartenden Entwicklung von essentieller Natur. Während der Dienstleistungssektor im Jahr 1991 63% der Bruttowertschöpfung ausmachte, stieg selbiger Anteil in zwei Jahrzehnten bereits auf 69% (siehe Abbildung 1). Die Standortanalyse liefert Antworten auf die Frage, wo eine Dienstleistung anzusiedeln ist. Sie beschreibt den objektiven, methodisch orientierten und fachlich fundierten Untersuchungsprozess für eine Immobilieninvestition. Die Standortanalyse beinhaltet das Sammeln, Gewichten und Bewerten von Informationen, welche direkten beziehungsweise indirekten Einfluss auf die zukünftige Entwicklung der Immobilie haben[3][12]. Städte sind komplexe Systeme, die sich durch ein vielschichtiges Beziehungsgeflecht zwischen der Bebauungsstruktur, den Infrastrukturnetzen (Strom, Wasser, Abwasser, Straßen, Bahnen, Telekommunikation) und dem Verhalten der Bewohner kennzeichnen und insbesondere moderne Datenquellen. Jedes dieser Teilsysteme erzeugt Daten, welche für die Standortanalyse relevant sind. Um eine Dienstleistung in einer Stadt zu etablieren, ist es notwendig zu untersuchen, wie das zugehörige Geschäftsmodell unter Berücksichtigung dieser Wechselwirkungen optimal in das System Stadt eingebettet werden kann. Methoden aus den Bereichen des Business Process/ Model Engineering und dem Systems Engineering können dazu beitragen diese Fragen zu beantworten. Unklar bleibt jedoch wie diese Methoden maschinell unterstützt werden können, damit sie der Komplexität von Stadtsystemen gerecht werden. Dieses Projekt betrachtet eine Facette der genannten Problemstellung, nämlich die Bewertung, inwiefern eine gegebene Dienstleistung zu den Orten passt, an denen sie angeboten werden soll. Hierbei liegt der Fokus auf der kombinierten Nutzung verschiedener Datenquellen (Sensordaten, Geoinformationssysteme, etc.), um eine automatische Bewertung zu † Abbildung 1: Wirtschaftsstruktur in Deutschland[11] 2 Viele Großstädte und Metropolen weltweit verfügen heute über enorme Bevölkerungszahlen und zunehmend wachsende Zuwanderung 1 . Infolge dieses Trends der steigenden Einwohnerzahl und Bevölkerungsdichte ist es unabdingbar auch die Abdeckung und optimale Verteilung der Dienstleistungen zu gewährleisten. Die Folge dieser ungleichmäßigen Verteilung kann sein, dass an einem bestimmten Ort ein Über- bzw. Unter-Angebot von Dienstleistungen entsteht. Große Städte und Metropolen sind komplexe Systeme, die aus vielen voneinander abhängigen Teilsystemen bestehen. Die Verteilung der Dienstleistungen und die ganze Infrastruktur in diesen Ballungsgebieten hängen stark vom Bedarf der Bevölkerung und deren Verhalten ab. Die Schwierigkeit ist den Bedarf sowie das Verhalten der Bevölkerung quantitativ zu erfassen und daraus Erkenntnisse für die Neuansiedlung von Dienstleistungen zu gewinnen. Man muss sich die Fragen stellen, welche Daten sich überhaupt praktisch erfassen lassen, welche davon quantitativ sinnvoll bewertet werden können, welche Daten benötigt werden und wie schnell diese Daten altern. Besonders die letzte Frage der Aktualität der Daten unterscheidet unseren Ansatz von anderen3 . In den meisten bereits bestehenden Ansätzen sind die verwendeten Daten zur Standortbestimmung statischer Art, werden nur sehr selten aktualisiert und sind geografisch nur sehr grob erfasst. In unserem Ansatz sollen die Daten direkt von ‡ Thorsten Ohler ∗ Ilhan Tas Omar Abada { abadaor ohlertn tasin} @studi.informatik.uni-stuttgart.de 1 Fraunhofer-Gesellschaft: P ROBLEMSTELLUNG Visionen zur Morgenstadt, Oktober 2013 Oktober 2013 2 http://www.morgenstadt.de, 3 www.standortanalyse.biz, 1 Oktober 2013 der Bevölkerung stammen. Rohdaten, die über eine externe mobile Anwendung von Benutzern pseudonym hochgeladen werden, werden weiterverarbeitet und daraus entstehen unmittelbar, sich ständig ändernde, aktuelle Daten. Diese dynamischen Daten sind nun nicht mehr statisch und geografisch grob, sondern können exakt einem beliebig groß gewählten Gebiet zugeordnet werden. 2.1 existieren nicht. Wenn sie überhaupt existieren, sind sie im Besitz von privaten Firmen (z. B. Telekom, Deutsche Bahn, Facebook), die die Daten nicht herausgeben. Für eine realistischere Simulation, wären solche Daten von großer Wichtigkeit. 3 S TAND DER W ISSENSCHAFT UND T ECHNIK Im Folgenden werden verwandte Arbeiten und Ansätze aus Wissenschaft und Technik angeführt und erläutert. Diese lassen sich in die Bereiche Standortanalyse und Big Data beziehungsweise DataMining kategorisieren. Den Abschluss bildet eine Einordnung der Relevanz dieser Ansätze für unser Projekt. Berechnung des optimalen Standorts Eine der wichtigsten Fragen, die es zu beantworten galt, war der Entwurf eines Algorithmus’ zur Bewertung von Standorten. Am Anfang stand eine von der Umgebung unabhängige Bewertung der jeweiligen Standortfaktoren im Raum. Unabhängig heißt in diesem Fall, dass für jeden Standortfaktor Wertebereiche erarbeitet werden, die man für gut oder schlecht erachtet und abhängig davon eine absolute Bewertung zuordnet. 3.1 Standortanalyse Die Wahl eines geeigneten Standorts beschäftigt die Anbieter von Waren und Dienstleistungen seit den Anfängen des Handels in der Antike bis hin zur unmittelbaren Gegenwart. Auch in der Zukunft wird diese Frage Menschen vor Herausforderungen stellen. Trotz der weitreichenden Geschichte der Standortwahl, lassen sich Ansätze einer parametrisierten Standortanalyse erst im 20. Jahrhundert finden. Reilly beschreibt in seinem Buch ”The law of retail gravitation”(1931)[2][8], in Anlehnung an das Newtonsche Gravitationsgesetz, dass die Nachfrage von einem Wohnort auf zwei umliegende Einkaufsstätten proportional zu der Einwohneranzahl der Einkaufsstätte und umgekehrt proportional zum Quadrat der Entfernungen dieser Stätten zum dazwischen liegenden Wohnort ist. Diesen Zusammenhang veranschaulicht Reilly mit Gleichung (1). Beispiel: Für Stuttgart sei eine Kaltmiete von unter 5,00 e pro Quadratmeter pro Monat sehr günstig und würde daher 100% als Bewertung bekommen. Die nachfolgenden Mietpreissegmente würden nun entsprechend gestaffelt werden. Eine Kaltmiete von 5,00 e bis 7,00 e pro Quadratmeter pro Monat würde eine 90% Bewertung bekommen. Eine Kaltmiete von 7,00 e bis 9,00 e pro Quadratmeter pro Monat würde eine 80% Bewertung bekommen, usw. Dieser Versuch der Gliederung in Wertebereiche mit zugehöriger absoluter Bewertung hätte nun für alle Standortfaktoren analog versucht werden können. Das Problem an dieser Vorgehensweise ist, dass die Bewertung zum einen von unserer subjektiven Meinung abhängig ist und zum anderen statisch und unabhängig von der Umgebung ist, anstatt dynamisch von der unmittelbaren Umgebung erzeugt zu werden. Somit wäre die Bewertung weder aktuell, noch könnte man sie woanders als in Stuttgart-Mitte verwenden, da anderenorts ein anderes Mietpreisniveau herrscht. 2.2 = Pa Pb 2 Db ∗ Da Gleichung (1) : Gravitationsgesetz nach Reilly Ba, Pa, Da, Wahl der Standortfaktoren und Gewichtungen : : : b b b Nachfrageanteil der Stätte a bzw. b Einwohneranzahl der Stätte a bzw. b Distanzen von a bzw. b zu dem Wohnort Reilly verwendet in seinem Ansatz lediglich die zwei Parameter Entfernung und Einwohnerzahl für seine Analyse. Der Schwachpunkt dieses Ansatzes liegt in den betrachteten Parametern. Gegenwärtige Konzepte betrachten eine größere Anzahl an Standortfaktoren. Modernere Modelle benutzen ein stochastisches Modell basierend auf dem Huffschen Ansatz (1963)[4]. Dieser Ansatz wird in Gleichung (2) angeführt. Er berechnet die Wahrscheinlichkeit einer Kaufentscheidung eines Konsumenten aus der Stadt i in dem Standort j. Ein ähnliches Problem trat auf, als es um die Wahl der Standortfaktoren ging. Zu viele Standortfaktoren erhöhen die Laufzeit des Programms und die Größe der Datenbank und verringern die Übersicht und den Fokus auf Wesentliches. Bei zu wenig Standortfaktoren hingegen besteht die Gefahr, dass wichtige Standortfaktoren weggelassen werden, die für manche Dienstleistung unabdingbar sind oder zumindest relevant für die Entscheidung. Es ist unklar welche Standortfaktoren wichtig und welche Standortfaktoren in der Praxis verfügbar und quantifizierbar sind. Direkt danach stellt sich dann die Frage, welche der gewählten Standortfaktoren zu den jeweiligen Dienstleistungen gehören und wie wichtig sie für die jeweilige Dienstleistung in Relation zu den anderen Standortfaktoren für diese Dienstleistung sind. Diese Frage ist nur sehr subjektiv zu beantworten. Jedes Unternehmen kann die Rolle eines Einflussfaktors, anhand verschiedener Bedürfnisse und Anforderungen, anders als andere Unternehmen bewerten. Daher sind flexible Einstellungsmöglichkeiten der Gewichtungen unabdingbar. 2.3 Ba Bb Pi j = A j ∗ di−λ j J ∑ A j ∗ di−λ j j=1 Gleichung (2) : Einkaufswahrscheinlichkeit nach Huff Aj di j λ Verfügbarkeit von Daten : : : Attraktivität des Standorts j Distanz zwischen Wohnort i und Standort j Distanzparameter Heutige Verfahren nehmen diesen Ansatz auf und erweitern die Gleichung um weitere Variablen wie Image, Kaufkraft, Preisniveau etc.[9]. Mittlerweile existieren kommerzielle webbasierte Standortanalyse Tools in Form von Geomarketing Anwendungen. Ein Beispiel solcher Anwendungen bietet die gb consite GmbH. In ihrem online Standortcheck4 berücksichtigt die Anwendung folgende Standortfaktoren:[10] Aufgrund der starken Abhängigkeit von einer externen mobilen Anwendung, die außerhalb des Rahmens dieses Projektes liegt, gestaltete sich die Datenbeschaffung schwierig. Diese mobile Anwendung sollte von jedem Nutzer die persönlichen Angaben, Ortungsdaten, geografischen und meteorologische Daten kontinuierlich ermitteln, aufzeichnen und speichern, um diese dann sobald eine Internetverbindung verfügbar ist, pseudonymisiert für die Speicherung in einer Datenbank hochzuladen. Ein großes Problem bereitete der Versuch die Daten näherungsweise realistisch zu simulieren. Daten vom statistischen Amt sind zwar öffentlich verfügbar, aber sind leider viel zu grob. Die meisten benötigten Daten sind zu meist ganzen Städten, in Einzelfällen Stadtteilen zugeordnet. Feinere Untergliederungen, beispielsweise mit der Genauigkeit von Straßen oder gar Hausnummern, • Beschaffungsorientierte Standortfaktoren (Verkehrsanbindung) • Absatzorientierte Standortfaktoren (Umsatzprognose, Kaufkraft, Konkurrenz) 4 www.standortanalyse.biz, 2 Oktober 2013 das Konzept der Shareconomy 6 , also der zunehmenden gemeinschaftlichen Nutzung von Produkten, Dienstleistungen etc. Es soll die optimale Verteilung und Nutzung von Waren in der Stadt unterstützt werden. In diesem Use Case geht es konkret um eine LogBox für Werkzeuge. Es soll der gemeinsame Gebrauch von Werkzeugen ermöglicht werden. Hierfür werden die über eine Anwendung in der Community nachgefragten Artikel in einer vorher vereinbarten LogBox abgelegt. Szenario 1 (Anbieter): Start-Up Unternehmen A möchte für die Aufstellung seiner LogBoxen die optimalen Standorte ermitteln. Mit Hilfe der Desktop-Anwendung, die Standorte analysiert, ermittelt es die optimalen Standorte und erspart sich eine Standortanalyse und die damit verbundenen hohen Kosten. Szenario 2 (Nachfrager): Person B möchte kleine Reparaturen in seinem Haushalt durchführen. Hierfür benötigt er eine Bohrmaschine, einen Akkuschrauber sowie eine Stichsäge. Bevor er viel Geld ausgibt und diese Geräte kauft, möchte er sie über das LogBox-System leihen. Leider steht ihm keine LogBox in unmittelbarer Nähe zur Verfügung, weshalb er über die mobile Anwendung mitteilt, dass er regelmäßigen Bedarf an einer solchen LogBox in der Nähe seiner Wohnung hätte. • Arbeitsorientierte Standortfaktoren (Arbeitsmarktkennzahlen) • Abgabenorientierte Standortfaktoren (Gewerbesteuerhebesatz) • Infrastrukturelle Standortfaktoren (Bildungseinrichtungen) 3.2 Big Data / Data-Mining Big Data hat sich zu einem der Schlagworte in der gegenwärtigen Informatik entwickelt. Dabei umfasst die Big Data Thematik die vier Dimensionen Datenvolumen, -geschwindigkeit, -vielfalt und -glaubwürdigkeit[1]. Die Grundidee besteht darin aus vorhandenen großen Datensätzen neue Geschäftsmodelle abzuleiten respektive neue kundenorientierte Angebote herzuleiten. Insbesondere IBM forscht in diesem Bereich und arbeitet an Lösungen für die Handhabung großer Datenmengen[5]. Ein wichtiger Bestandteil dieses Projekts liegt in der Erfassung und Analyse von großen Datenmengen. Dabei handelt es sich um öffentlich verfügbare beziehungsweise über eine mobile Anwendung zu beschaffende Daten. Karamshuk et al.[6] analysieren räumliche beziehungsweise geografische Datensätze aus dem sozialen Netzwerk Foursquare um Dienstleistungen bezüglich ihrer Qualität zu verbessern, sowie Städte intelligenter zu machen. Ihre Arbeit klassifizieren sie als Urban Mining5 . Qu und Zhang[7] leiten aus Foursquare Checkins Aktivitätszentren von Benutzern ab und erstellen eine location history für sie. Aus diesen Datensätzen leiten sie neue Geschäftsmodelle wie ortsgebundene Werbung ab. 3.3 4.2 Die Theodor-Heuss-Straße hat sich zu der Club- und Barmeile in Stuttgart entwickelt. Können weitere Bars mit den vorhandenen konkurrieren? Szenario 1 (Anbieter): Jungunternehmer C aus München möchte eine Bar in Stuttgart eröffnen. Er hat viel von der Theodor-HeussStraße als Partymeile gehört. Er stellt sich nun die Frage ob diese als Standort für seine Bar in Frage kommt oder ob ein anderer Standort mehr Erfolg verspricht. Hilfe leistet ihm dabei die automatisierte Standortanalyse der Desktop-Anwendung. Szenario 2 (Nachfrager): Person D nimmt regelmäßig am Stuttgarter Nachtleben teil. Jedoch findet er das aktuelle Angebot an Bars und Lounges als zu knapp und die vorhandenen Lokale als zu überfüllt. In die Anwendung gibt er den Wunsch für den Standort einer neuen Bar samt seinen Wünschen zur Musik und Ausstattung ein. Relevanz der Ansätze für unsere Arbeit Die angeführten Ansätze beschäftigen sich direkt beziehungsweise indirekt mit der diesem Projekt zugrunde liegenden Problemstellung. Unser Ansatz nutzt die Erkenntnisse aus den oben beschriebenen Bereichen. Insbesondere werden Standortfaktoren sowie Sensordaten in unserer Anwendung in der Analyse betrachtet. 3.4 Abgrenzung unseres Ansatzes Unser Ansatz nutzt eine Kombination der Erkenntnisse aus den beiden oben beschriebenen Bereichen und stellt somit ein neues Konzept für die Standortanalyse dar. Ein weiterer wichtiger Unterscheidungspunkt unseres Ansatzes liegt in der dynamischen Erfassung und Speicherung der Daten. Dies garantiert, dass die Berechnung des optimalen Standorts stets mit aktuellen Datensätzen durchgeführt wird. 4 4.3 Im Folgenden werden die vier Use Cases, die in dem Projekt Geo Business Model Engineering implementiert sind, angegeben und erläutert. Zu den einzelnen Use Cases werden jeweils zwei Szenarien angegeben. Hierbei betrifft das erste Szenario jeweils die Standortauswahl des jeweiligen Services und stellt somit die Anbieterperspektive dar. Der Anbieter sucht einen Standort für seine Dienstleistung. Das zweite Szenario ist aus Benutzer-Sicht formuliert und beschreibt die Möglichkeiten für die User ihre Wünsche über eine mobile Anwendung zu äußern, wo, nach ihrer Meinung, noch Bedarf an der jeweiligen Dienstleistung besteht. Dieses Szenario setzt die Entwicklung einer mobilen Anwendung voraus, die diese Informationen sammelt und uns zugänglich macht, um diese Information ebenfalls in die Suchanfrage aus Szenario 1 zu integrieren. Die Erfassung von aktuellen Wünschen aus der Bevölkerung und Einbeziehung in die Standortanalyse unterstreicht nochmal den Unterschied der Dynamik und Aktualität der Anwendung im Gegensatz zu vergleichbaren Anwendung. 4.4 Use Case 4: Kinderbetreuungseinrichtung Die Stadt Stuttgart sowie private Unternehmen sind daran interessiert Kinderbetreuungsstellen in der Stuttgarter Innenstadt zu errichten. Alleinerziehende Mütter und Väter haben die Möglichkeit ihre Kinder während dem Einkauf betreuen zu lassen, um so den Einkauf schnell und mühelos zu erledigen. Szenario 1 (Anbieter): Die Stadt G sowie private Unternehmen wollen ein Netz aus Kinderbetreuungsstellen in der Innenstadt errichten. Mit der Desktop-Anwendung können diese sich eine teure Standortanalyse ersparen. Szenario 2 (Nachfrager): Person H möchte auf der Königstrasse shoppen. Als alleinerziehende Mutter muss sie ihre vierjährige Tochter immer mitnehmen. Es gibt leider keine Kinderbetreuung in der Nähe. Ihren Bedarf meldet sie in der mobilen Anwendung. Use Case 1: LogBox Die LogBox ist ein aktuelles Forschungsprojekt des FraunhoferInstituts IAO. Es geht bei diesem Projekt um die Entwicklung eines innovativen Logistik-Systems. Der Gedanke hinter dem Projekt ist 5 http://de.wikipedia.org/wiki/Urban Use Case 3: Food-Truck Der Food-Truck stellt ein mobiles Restaurant dar. Das Angebot kann weitgehend der Nachfrage angepasst werden. Szenario 1 (Anbieter): Food-Truck Besitzer E stellt sich jeden Tag die Frage, an welchem Standort er seine Produkte anbieten soll. In Frage kommen Orte mit hohem Menschendurchsatz, Sportereignisse, Feste, Veranstaltungen, große Baustellen, Schulen, Hochschulen etc. Bei der Auswahl des täglichen Standorts kann ihm die DesktopAnwendung behilflich werden. Szenario 2 (Nachfrager): Baustellenarbeiter F möchte zum Mittagsessen eine Currywurst essen. Hierfür gibt er in die Anwendung seine Postion ein und wird zukünftig eventuell bedient. U SE C ASES 4.1 Use Case 2: Bar 6 http://www.gruenderszene.de/allgemein/shareconomy-infografik, Oktober 2013 Mining, Oktober 2003 3 5 L ÖSUNGSANSATZ Unsere Anwendung soll eine automatische Bewertung von Standorten zur Ansiedlung von Dienstleistungen abgeben, welche mit Hilfe einer kombinierten Nutzung verschiedener Datenquellen zustande kommt. Praktisch könnte die Anwendung als Entscheidungshilfe von den Verantwortlichen der Stadtplanung eingesetzt werden, um transparent zu machen, wie, wo und warum etwas neu gebaut bzw. geändert werden könnte. Aber auch Kreditinstitute, Unternehmer und Privatleute könnten einen erheblichen Nutzen aus der Anwendung ziehen. Banken könnte beispielsweise die Entscheidung über eine Kreditvergabe für Dienstleistungen, die neu gegründet werden sollen, erleichtert werden. Zudem könnten Existenzgründer bei ihren Überlegungen die Anwendung zu Hilfe nehmen. Anzahl dieses Ergebnisses ist nun der Menschendurchsatz in einem Jahr an dieser Stelle. Diese muss nun durch die Anzahl der Nutzer und durch 8760 (365 Tage x 24 Stunden) geteilt werden. Um nun eine realistische, absolute Zahl zu erhalten, müsste das Ergebnis nun noch hochgerechnet werden, je nachdem wie viel Prozent der Bevölkerung die Anwendung regelmäßig nutzen. Aber auch ohne diese Hochrechnung erhält man hier gute Vergleichswerte zwischen den verschiedenen Orten. Weiterhin können beispielsweise der Beschleunigungssensor und die Geschwindigkeit benutzt werden, um zu differenzieren, ob es sich tatsächlich um einen Fußgänger handelt und nicht fälschlicherweise um einen Radfahrer oder Autofahrer, die an dieser Stelle nicht erfasst werden sollten. Analog müsste für die anderen semantisch angereicherten Daten verfahren werden. 5.1 Kategorisierung der Daten Um eine Struktur und Übersicht der Daten zu erhalten, wurde das Vorhaben in 4 grundlegende Ebenen unterteilt: Zu den semantisch angereicherten Daten zählen: • Mietpreis in e/m2 pro Monat • Durchschnittliche Temperatur im Sommer in ◦ C • Durchschnittliche Temperatur im Winter in ◦ C • Durchschnittlicher Niederschlag in mm/m2 • Durchschnittliche Luftfeuchtigkeit in % • Durchschnittliche Windgeschwindigkeit in km/h • Durchschnittliches Einkommen pro Einwohner pro Jahr in e • Arbeitslosenquote in % • Anteil an Erwerbstätigen in % • Bevölkerungsdichte in Einwohnern pro km2 • Einzugsgebiet im km2 • Durchschnittliche Anzahl an Passanten pro Stunde • Durchschnittliche Anzahl an Kraftfahrzeugen pro Stunde • Anteil an 0-17-Jährigen in % • Anteil an 18-39-Jährigen in % • Anteil an 40-65-Jährigen in % • Anteil an über 66-Jährigen in % • Anteil weiblicher Einwohner in % • Anteil der in einer Beziehung lebenden Einwohner in % • Anteil an Singles in % • Anteil an Ausländern in % • Anteil an Einwohnern mit regelmäßiger PKW Benutzung in % • Anteil an Einw. mit regelmäßiger Fahrrad Benutzung in % • Durchschnittliche Anzahl an Personen pro Haushalt • Zuwanderung an Personen pro Jahr in % • Abwanderung an Personen pro Jahr in % • Verkehrsunfälle pro Jahr pro 1000 Einwohner • Kriminalitätsrate in Anzahl von gemeldeten Verbrechen pro 1000 Einwohner • Level 1 - Rohdaten: Daten, die durch eine Vielzahl von Nutzern einer externen mobilen Anwendung erzeugt werden. • Level 2 - Mapping der Rohdaten auf semantisch angereicherte Daten. Die Daten hierfür wurden simuliert. • Level 3 - Mapping der semantisch angereicherten Daten auf vorgegebene Dienstleistungen und Standortanalyse. • Level 4 - Berechnung des optimalen Standorts 5.1.1 Level 1 Rohdaten Nutzer loggen mit einer mobilen Anwendung auf ihrem Smartphone Daten mit. Es werden von jedem Nutzer alle Sensordaten erfasst und einer eindeutigen Nutzer-ID zugeordnet. Beispiele für solche Daten sind Datum, Uhrzeit, Längengrad, Breitengrad, Höhe über Meeresspiegel, Beschleunigungssensor (x-, y-, z-Richtung), Geschwindigkeit, Licht, Orientierung (x-, y-, z-Richtung), Luftdruck, Temperatur und Schallpegel (siehe Tabelle 1). Angaben zu der Person des Nutzers können eingegeben oder über soziale Netze abgegriffen werden (siehe Tabelle 2), sodass die Kombination aus Sensor- und Nutzer-Angaben dazu benutzt werden können die semantisch angereicherten Daten zu bilden. 5.1.2 Level 2: semantisch angereicherte Daten Die Tabellen 1 und 2 werden miteinander, durch die Zuordnung der Nutzer-ID, verknüpft. Per passender SQL-Befehle bzw. anderen und weiteren Berechnungen ist es dann auch möglich die semantisch angereicherten Daten zu berechnen und diese in der Standortanalyse zu verwenden. Hierbei muss man beachten, dass die Sensordaten (siehe Tabelle 1) enorm hohe Datenmengen ergeben. Angenommen der Datensatz für einen Nutzer würde beispielsweise 60 Byte (15 Werte a 4 Byte) betragen und es würde sekündlich geloggt werden. Dann würde das bedeuten, dass die Datenbank innerhalb von 24 Stunden und 100.000 Nutzern folgende Datenmenge verwalten müsste: 100.000 Nutzer x (24 Stunden x 60 Minuten x 60 Sekunden) x 60 Byte (pro Datensatz) = 520 GByte. Der Durchsatz würde bei 100.000 x 60 Byte = 6 MByte/s liegen. Diese Datenmenge erfordert die intensive Untersuchung hinsichtlich der Prinzipien des Big Data. Unter anderem lässt sich beispielsweise der Menschendurchsatz aus mehreren Faktoren der gesammelten Rohdaten bilden. Folgende Rohdaten sind für die Berechnung des Menschendurchsatzes von besonderer Bedeutung: Datum, Uhrzeit, Längengrad, Breitengrad, Beschleunigungssensor und Geschwindigkeit. Im Folgenden wird eine Vorgehensweise skizziert, um aus den Rohdaten den durchschnittliche Durchsatz an Passanten pro Stunde an einem bestimmten Ort zu bestimmen: Man nehme von allen Nutzerdatensätzen den gleichen Ausschnitt von einem Jahr. Nun sucht man in allen Datensätzen den Längen- und Breitengrad des Ortes, für den der Menschendurchsatz bestimmt werden soll. Die 5.1.3 Level 3: Mapping der semantisch angereicherten Daten auf vorgegebene Dienstleistungen und Standortanalyse In dieser Ebene geht es um das Mapping der semantisch angereicherten Daten auf vorgegebene Dienstleistungen und die darauf aufbauende Suche nach optimalen Standorten für diese Dienstleistungen. Da das Mapping, wie in Problemstellung 2.2 beschrieben, nicht allgemeingültig formuliert werden kann, wird es dem Nutzer überlassen zu bestimmen, welche Standortfaktoren er als wichtig erachtet. Es wird lediglich eine Vorauswahl an Standortfaktoren für eine jeweilige Dienstleistung getroffen. Auch die zugehörigen Gewichtungen, also das Verhältnis der Wichtigkeit zwischen den Standortfaktoren untereinander, kann vom Nutzer festgelegt werden. Der Nutzer hat die Möglichkeit die Standortfaktoren individuell zu gewichten. Für die Suche eines besonders niedrigen bzw. hohen Wert stehen ihm dabei die Vorzeichen - und + zur Verfügung. Das heißt eine negative Gewichtung bedeutet, dass die Anwendung bei der optimalen Standortsuche versucht einen von der Gewichtung abhängig möglichst niedrigen Wert zu suchen bzw. bei einer positiven Gewichtung einen möglichst hohen Wert (siehe Abbildung 2). 4 Datum 13.10.13 13.10.13 13.10.13 13.10.13 ... Uhrzeit 11:30:01 11:33:02 11:33:03 11:33:04 ... Breitengrad 48.7436 46.7437 46.7437 46.7438 ... Längengrad 9.1075 9.1075 9.1076 9.1077 ... Beschleunigungssensor (m/s2 ) (-0.011, 0.039, -1.004) (-0.021, 0.041, -2.013) (-0.021, 0.019, -0.099) (-0.051, 0.211, -3.011) ... Höhe (m) 448.5 449.1 449.3 449.3 ... Geschwindigkeit (m/s) 3.3 4.7 8.1 3.2 ... ... ... ... ... ... ... Tabelle 1: Log Tabelle für ausgewählte Sensordaten von einer Nutzer-ID Nutzer-ID 001 002 ... Geburtsdatum ... ... ... Beziehungsstatus ... ... ... Beruf ... ... ... Wohnort ... ... ... Interessiert an ... ... ... ... ... ... ... Tabelle 2: Persönliche Angaben der Nutzer - z. B. von Sozialen Netzwerken dass der tatsächlich momentan niedrigste Preis auch wirklich mit 100% und der teuerste mit 0% bewertet. Hierbei ist vorausgesetzt, dass ein niedrigerer Preis besser als ein hoher Preis bewertet werden soll. Natürlich könnte man die Bewertung auch umdrehen. Durch dieses Vorgehen, ist die Bewertung nicht mehr abhängig von einem einmal festgelegten, statischen Wert, sondern wird dynamisch für jede Bewertung neu ermittelt und ist somit immer aktuell. Außerdem wird damit verhindert, dass das Programm nur für Stuttgart-Mitte funktionieren würde, sondern auch in München, wo die Mietpreise höher sind oder Leipzig, wo sie niedriger sind. 5.2 Abbildung 2: Ausschnitt Programm: Wahl der Gewichtungen 5.1.4 Repräsentation der Karte in der Datenbank Eine weitere Herausforderung die im Verlauf des Projektes Schwierigkeiten bereitet hat, war die Repräsentation eines Ortes in der Datenbank. Es gab zwei grundsätzlich verschiedene Optionen. Die erste war einen Ort anhand seiner Adresse eindeutig in der Datenbank zu identifizieren. Dies hätte den Vorteil, dass weniger Geocoding-Anfragen per Google-API (Application Programming Interface) gesendet und empfangen werden müssten. Geocoding wird der Vorgang des Übersetzens einer Adresse in Längen- und Breitengrad genannt. Reverse Geocoding ist dementsprechend die Rückrichtung, d. h. einem Längen- und Breitengrad wird einer Adresse zugeordnet. Außerdem könnten Daten, die wir für die Simulation erhalten, aber z. B. einer Straße und nicht der Straße zugehörigen Längen- und Breitengrade zugeordnet sind (beispielsweise der Durchsatz von Passanten pro Stunde in einer bestimmten Straße), leichter in der Datenbank abgelegt werden. Die zweite Option bestand darin, die Orte anhand ihres Längen- und Breitgrades eindeutig in der Datenbank zu identifizieren. Der Hauptvorteil hier ist, dass jeder Ort eindeutig und viel genauer identifiziert werden kann. Während zwischen Adressen einige hundert Meter liegen können, liegt die Genauigkeit hier im einstelligen Meterbereich. Auch Orte ohne Adresse können zugeordnet werden. Ein weiterer großer Vorteil dieser Option ist, dass die externe mobile Anwendung, die der Desktop-Anwendung die Daten später zur Verfügung stellen soll, höchstwahrscheinlich ebenfalls ihre Daten intern Längen- und Breitengrad (z. B. SensorLog7 ) zuordnet und so eine Konsistenz zwischen den Anwendungen bzw. den Datenbanken herrscht. Für die interne Darstellung der Landkarte im Programm bzw. der Datenbank, wurde entschieden, dass die Variante der Darstellung eines Ortes per Längen- und Breitengrad die bessere Variante ist. Es galt allerdings noch die Frage zu klären, in wie große Segmente die Karte unterteilt werden soll. Es gab wieder eine Abwägung: Speicherbedarf und Rechenzeit gegen Genauigkeit der Bewertung. Wie bereits erwähnt, wurde im Rahmen des Projekts die Region Berechnung des optimalen Standorts Wie in Problemstellung 2.1 angesprochen, war es ein Problem, dass die Bewertung eines Ortes nicht unabhängig von seiner Umgebung sein durfte. Das heißt die Idee die Bewertung abhängig von der Umgebung zu machen war naheliegend. Die Vorgehensweise wird am folgenden Beispiel verständlich: Der Standortfaktor sei wieder die Kaltmiete pro Quadratmeter pro Monat, d. h. es soll eine Bewertung für ein Objekt in StuttgartMitte ermittelt werden. Um eine Bewertung in Abhängigkeit der Umgebung zu bekommen, betrachte man alle Preise in StuttgartMitte und ermittle die Anzahl an verschiedenen Vorkommen von Werten. Der Einfachhalt halber nehmen wir an, dass die Preise linear in 0,05 e Schritten verteilt sind. Die Werte in Stuttgart-Mitte reichen von 4,00 e bis 16,00 e. Das heißt es gibt 20x12 = 240 verschiedene Werte, dann wäre ein Objekt mit einem Mietpreis von 12,65 e mit ((12.65-4)/0.05)/240 = 72,08% zu bewerten. Somit ist garantiert, 7 https://itunes.apple.com/de/app/sensorlog/id388014573, 5 Oktober 2013 Stuttgart-Mitte untersucht. Der Bereich der intern in Segmente unterteilt wurde ist exakt der folgende: (siehe auch Abbildung 4) • • • • renden und förderlichen Dienstleistungen berechnet, Adressen in Längen- und Breitengrad und umgekehrt per Geocoding übersetzt und Near-By-Searches ausgeführt, um die eben genannten konkurrierenden und förderlichen Dienstleistungen in der Nähe eines Ortes zu lokalisieren und zusätzliche Informationen über diesen Ort zu erhalten. Als Ausgabe erhält der Nutzer eine ausführliche Bewertung über alle Einflussfaktoren, die zu diesem Ort existieren, zusammen mit dem optimalen Standort und vier möglichen Alternativen. Dazu werden die Werte auch mit den Durchschnittswerten der Region, in der die Anwendung die Standortanalyse durchgeführt hat, verglichen. Weiterhin werden die vom Nutzer gewählten Einflussfaktoren in grün gefärbt, um eine bessere Übersicht zu erhalten. Ebenfalls aufgeführt sind die Distanzen zu förderlichen und konkurrierenden Dienstleistungen. Auf der Landkarte werden der optimale Ort und die vier alternativen Orte eingezeichnet. Außerdem wird auf der Karte angezeigt, was für konkurrierende und förderliche Dienstleistungen sich wo befinden, als auch Möglichkeiten zur Nutzung von öffentlichen Verkehrsmitteln. Oben-Links: Breitengrad: 48.7900, Längengrad: 9.1600. Oben-Rechts: Breitengrad: 48.7900, Längengrad: 9.2000. Unten-Links: Breitengrad: 48.7700, Längengrad: 9.1600. Unten-Rechts: Breitengrad: 48.7700, Längengrad: 9.2000. Dies ist ein Rechteck der Größe: Breite 2,94 km, Höhe: 2,2 km. Wir haben uns daher dafür entschieden folgende Größen zu verwenden: Gitternetzgröße: Breite: 7,32 m, Höhe: 11,1 m Umrechnung Breitengrad in Meter: Erdumfang/360 ≈ 40000 km/360 ≈ 111 km. Für eine Genauigkeit von vier Nachkommastellen: 111 km/10000 = 11,1 m Umrechnung Längengrad in Meter: ∆ Längengrad * cos(Breitengrad) ≈ 111 km * cos(48.77) ≈ 73,16 km. Für eine Genauigkeit von vier Nachkommastellen: 73,16 km/10000 ≈ 7,32 m Das ergab für den obigen Bereich Stuttgart-Mitte ein Gitternetz mit 201 Zeilen und 401 Spalten: 201 x 401 = 80601 Orte (80601 Zeilen in der Datenbank), wenn mit einer Genauigkeit von 4 Nachkommastellen gearbeitet wird. Praktisch möglich, d. h. von Google unterscheidbar, wäre eine Genauigkeit von 6 Nachkommastellen gewesen. Dies hätte einer Gitternetzgröße von nur wenigen Zentimetern entsprochen und wäre daher völlig übertrieben gewesen. Eine Gitternetzgröße von einigen Metern erschien dahingegen sinnvoll, da so einzelne Hausnummern relativ präzise unterschieden werden können und der Speicherbedarf und die Geschwindigkeit trotzdem erträglich bleiben. Wir hatten 28 Standortfaktoren pro Ort definiert (28 Spalten in der Datenbank). Das heißt insgesamt waren 80601 x 28 = 2256828 Einträge in der Datenbank von Nöten, um Stuttgart Mitte in der Datenbank mit der oben genannten Genauigkeit abzubilden. Bei einer Größe von 4 Byte pro Eintrag für einen Standortfaktor in der Datenbank, ergibt dies eine Datenmenge von 2256828 x 4 Byte = 9027312 Byte = ca. 9 MByte. 5.3 6 I MPLEMENTIERUNG 6.1 Wahl des Datenbankmodells und der Datenbank Für das relationale Datenbankmodell sprach die Repräsentation in Tabellen, da erwartet wurde, dass die Daten sehr vieler Nutzer gesammelt und geschrieben werden müssen und sich diese am besten in Tabellen repräsentieren lassen. Bei relationalen Datenbanken können die Daten zeilenweise gut über Tabellen verwaltet werden und die Beziehungen zwischen Daten kann flexibel, ohne eine vorausgesetzte Abhängigkeit, festgelegt werden. Somit stand die Datenbanksprache SQL (Structured Query Language) fest. Unter den SQLImplementierungen stehen eine große Ansammlung an Alternativen zur Verfügung, wie z. B. Microsoft SQL Server, MySQL, SQLite. Faktoren, die für die Wahl entscheidend waren, waren vor allem die Kosten, die Lauffähigkeit auf den verschiedenen Betriebssystemen, die unterstützten Programmiersprachen, die Geschwindigkeit und die Skalierbarkeit. Aber auch die Verbreitung und der dadurch gute, meist kostenlose, Support durch die große Nutzer- und Entwicklergemeinde waren zu berücksichtigen. Als Datenbank wurde SQLite gewählt, da diese die konstengünstigste Option darstellt und kein Root-Server nötig ist. Außerdem war es mit SQLite möglich die Datenbank lokal mit dem Programm mitzuführen und trotzdem die Vorteile von SQL nutzen zu können. Des weiteren ist es sehr leicht möglich, insbesondere durch eine gesonderte Datenbankschicht in der Anwendungsarchitektur, die Anwendung mit wenig Zeilen Code auf MySQL umzustellen und so eine MySQL-Datenbank online, statt lokal mitgeführt, zu verwenden. Allgemeiner Datenfluss und Programmablauf In Abbildung 3 (siehe Anhang A) ist dargestellt, wie die Daten aus der realen Welt über die schon angesprochene mobile Anwendung von den Nutzern gesammelt und verarbeitet werden bis hin zur Berechnung des optimalen Standorts. Hierbei sollte man beachten, dass der obere, gestrichelt gezeichnete Teil, in dem die Daten von der realen Welt von den Nutzern per mobiler Anwendung eingelesen werden, hin bis zur Verarbeitung der Rohdaten in semantisch angereicherte Daten außerhalb des Rahmens dieses Projekts stattfindet. Der restliche Teil stellt den Datenfluss unserer Anwendung dar. Es wurde also schon eine bestehende, befüllte Datenbank vorausgesetzt. Diese ist als ”Level 2: Datenbank” in Abbildung 3 (siehe Anhang A) dargestellt. Das Programm holt sich die benötigten Daten bei jeder Ausführung neu per SQL-Anfragen aus der Datenbank. Es wird versucht eine möglichst starke Vorauswahl per SQL-Befehlen zu erreichen bzw. einfache Berechnungen von SQL erledigen zu lassen, um so unnötige Übertragungszeiten einzusparen. Die Eingabefelder im Programm fordern den Programm-Nutzer dazu auf, einen Ort einzugeben. Dies kann eine Straße, ein Stadtteil oder eine ganze Stadt sein oder soll später auch per Auswahl auf der Karte möglich sein. In unserer Anwendung ist momentan nur Stuttgart Mitte implementiert. Weiterhin kann der Nutzer eines der vier Dienstleistungen (siehe Use Cases) auswählen. Daraufhin werden ihm vorausgewählte Standortfaktoren inklusive der zugehörigen Gewichtungen vorgeschlagen. Auch diese Daten werden vom Programm später verarbeitet. Nach der Eingabe des Nutzers, schickt das Programm mehrere Anfragen an die Google-API 8 und an die OpenstreetMaps Server 9 , die die Landkarte bzw. Tile-Maps zur Verfügung stellen. Von der Google-API werden Entfernungen zwischen Orten und konkurrie- 6.2 Architektur Für die Strukturierung der Anwendung haben wir uns für die Drei-Schichten-Architektur entschieden. Durch die drei Schichten wird versucht die Komplexität der Abhängigkeiten innerhalb der Anwendung zu reduzieren und somit eine geringere Kopplung bei gleichzeitig höherer Kohäsion der einzelnen Schichten zu erreichen. Dies soll eine gute Erweiter- und Wartbarkeit gewährleisten und das Verständnis der Anwendung erhöhen. Die Drei-SchichtenArchitektur besteht aus den folgenden drei Schichten. Zu jeder Schicht sind exemplarisch zugehörige Klassen aufgeführt. Die Präsentationsschicht ist für die Repräsentation der Daten, Benutzereingaben und die Benutzerschnittstelle verantwortlich. • Mainwindow.java - Benutzeroberfläche zur Eingabe des Ortes, Auswahl der Dienstleistung und Wahl der Standortfaktoren und Gewichtung • SwingWaypoint.java - Klasse, um Standorte, förderlichen/ konkurrierenden Dienstleistungen und öffentlichen Verkehrsmittel per Wegpunkt auf der Karte anzuzeigen. 8 https://developers.google.com/maps/?hl=de, 9 http://wiki.openstreetmap.org/wiki/API Oktober 2013 v0.6, Oktober 2013 6 preis 8.37 8.39 8.42 8.43 ... Die Logikschicht beinhaltet alle Verarbeitungsmechanismen. In dieser Schicht befinden sich die Klassen, die die Anwendungslogik implementieren. • Optimise.java - Bereitstellung des Algorithmus und alle nötigen Funktionen, die benötigt werden, um die Bewertung aller Orte durchzuführen • Location.java - Klasse, die die Orte in der Anwendungslogik darstellt. Jeder Ort hat seine eigenen Werte und die dazugehörigen Bewertungen für jeden Standortfaktor • Service.java - Klasse, die die Dienstleistungen in der Anwendungslogik darstellt. Tabelle 3: Beispiel eines Ausschnitts der Tabelle für den Standortfaktor Preis, die man zurückbekommt, wenn man Zeile 6 ausführt 1 Datenhaltungsschicht: Sie enthält die Datenbank und ist verantwortlich für das Speichern und Laden von Daten. 2 3 • DBController.java - Steuerung der Datenbank. Laden des JDBC-Treibers, Aufbauen und Abbauen der Verbindung mit der Datenbank • DBInterface.java - Datenbank-Schnittstelle • GooglePlacesClient.java - Schnittstelle um mit der GoogleAPI zu kommunizieren 4 5 6 Es wurde versucht die Schichten gemäß der Einteilung so gut wie möglich zu entkoppeln. Als Programmiersprache wurde Java gewählt, da hier schon einige Bibliotheken vorhanden waren, um schon vorhandene Dienste und APIs nutzen zu können. Ein weiterer Vorteil von Java ist die Plattform-Unabhängigkeit. Die Bibliotheken swingx.JXMapViewer, swingx.JXMapKit.* und swingx.mapviewer.* wurden verwendet um den Zugriff zu den OpenStreet-TileMaps zu realisieren und somit die Kartendarstellung umzusetzen. Weiterhin wurden die Bibliotheken java.sql.Connection, java.sql.DriverManager, org.sqlite.JDBC und sqlite-jdbc-3.7.2 verwendet, um eine SQL-Datenbank in die Anwendung zu integrieren. Über diese Bibliotheken war es nun möglich eine Verbindung zur Datenbank aufzubauen und SQL-Anfragen zu senden und ResultSets zu empfangen. Für den Umgang mit der Google-API wurden com.google.gson.Gson, java.net.URLConnection und org.apache.http.* verwendet. 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 6.3 locations (48.7701, 9.1718), (48.7701, 9.1718), (48.7701, 9.1718) (48.7123, 9.1432), (48.7701, 9.1718) (48.7821, 9.1321), (48.7701, 9.1718), (48.7701, 9.1718) (48.7748, 9.1456) ... Algorithmen 23 Der folgende Algorithmus führt eine Bewertung für jeden Standortfaktor eines Ortes durch. Diese Bewertung wird für alle zu bewertenden Orte durchgeführt. Die Bewertung ist nicht unabhängig, sondern bezieht die anderen Orte vergleichend mit in die Bewertung ein, um so eine Bewertung in Abhängigkeit ihrer Umgebung zu erhalten. Die Rückgabe ist eine Liste mit allen bewerteten Orten. Die Laufzeit beträgt O(n*m), wobei n = Anzahl der Orte und m = Anzahl der Standortfaktoren. Für Stuttgart-Mitte ist n = 80601. In Zeile 3 wird eine Hashmap angelegt, um so die Suche nach schon vorhandenen Orten in konstanter Zeit durchführen zu können. In Zeile 5 wird per SQL-Anfrage an die Datenbank die Anzahl an verschiedenen Werten des jeweiligen Standortfaktors in der Datenbank ermittelt. In Zeile 6 wird ebenfalls eine SQL-Anfrage ausgeführt. Die Rückgabe ist eine Tabelle, die für jeden verschiedenen Wert eines jeweiligen Standortfaktors die zugehörigen Längen- und Breitengrade als Location ausgibt (siehe Tabelle 3). In Zeile 9 wird die Bewertung für den jeweiligen Standortfaktor berechnet. Sie ist der Quotient aus der Platzierung innerhalb der verschiedenen Werte des jeweiligen Standortfaktors und der Gesamtanzahl der verschiedenen Werte des selbigen. Zeile 10 stellt sicher, dass alle Locations je nach Wert der Tabelle durchlaufen werden. In den Zeilen 11-16 wird überprüft, ob die Hashmap diesen Ort bereits enthält. Wenn dies der Fall ist, wird dieser Ort genommen, wenn nicht wird ein neuer Ort erstellt und der Hashmap hinzugefügt. Für den Ort wird nun die Bewertung für die jeweilige Dienstleistung zugeteilt. In Zeile 22 wird eine Liste mit den bewerteten Orten zurückgegeben. public ArrayList<Location> locationOptima() { double maxDistinct; Map<Location, Location> locationMap := new HashMap<Location,Location>(); for alle_Standortfaktoren standortfaktor do maxDistinct := doQuery("SELECT count( DISTINCT standortfaktor) as maxDistinct FROM overall"); resultSet := doQuery("SELECT standortfaktor , group_concat(lat) as lat, group_concat(lng) as lng FROM overall GROUP BY standortfaktor"); int zeile := 0; while (resultSet.next()) bewertung := zeile/maxDistinct; for alle_Locations_Je_Wert j do if (locationMap.contains(j)) location := locationMap.get(j); else { location := new Location(j); locationMap.put(j, location); } od location.Bewertung_standortfaktor := bewertung; zeile := zeile + 1; } od return new ArrayList<Location>(locationMap. values()); } Algorithmus 1: Bewertung aller Standortfaktoren eins Ortes Der folgende Algorithmus berechnet den optimalen Ort in Abhängigkeit von den gewählten Standortfaktoren und ihren zugehörigen Gewichtungen. Die Laufzeit beträgt ebenfalls O(n*m), wobei n = Anzahl der Orte und m = Anzahl der Standortfaktoren ist. In den Zeilen 3-6 wird die Summe aller gewählten Gewichtungen aufaddiert. In den Zeilen 7-15 wird für jeden Ort seine Gesamtbewertung in Abhängigkeit von den gewählten Standortfaktoren und ihren zugehörigen Gewichtungen berechnet. Hierzu werden alle Orte durchlaufen und für jeden Ort wiederum alle zur Dienstleistung gehörenden Standortfaktoren, um so jeweils die einzelne Bewertung eines Standortfaktors mit seiner Gewichtung zu multiplizieren und diese Teilergebnisse aufzusummieren. Diese Gesamtsumme wird am Ende durch das vorher errechnete Gesamtgewicht geteilt um eine Gesamtbewertung für einen Ort zu erhalten. In den Zeilen 9 und 11 wird überprüft, ob die Gewichtungen positiv oder negativ sind. Ist die Gewichtung negativ ist ein niedrigerer Wert besser, ist sie positiv ist ein höherer Wert besser. In Zeile 16 wird die Liste mit allen Orten dann nach ihrer Gesamtbewertung sortiert, um so den optimalen Ort und die nächstbesten Orte zu erhalten. 7 7 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public Location optimium() { ArrayList<Location> allLocations := locationOptima(); double gesamtGewichtung := 0; for alle_Eingaben_Gewichtung gewichtung do gesamtGewichtung := gesamtGewichtung + Math .abs(gewichtung); od for (allLocations currentLocation) do for (alle_Standortfaktoren_Dieser_Dleistung standortfaktor) do if (standortfaktor_gewichtung < 0) currentLocation.Gesamtbewertung := currentLocation.Gesamtbewertung + (1 - currentLocation. Bewertung_standortfaktor) * standortfaktor_gewichtung * (-1); else currentLocation.Gesamtbewertung := currentLocation.Gesamtbewertung + currentLocation. Bewertung_standortfaktor * standortfaktor_gewichtung; od currentLocation.Gesamtbewertung := currentLocation.Gesamtbewertung / gesamtGewichtung; od sort(allLocations, Gesamtbewertung) return location; } 8 E VALUATION Um sicherzustellen, dass sowohl die Normalfälle, als auch fehlerhafte Eingaben sowie sämtliche Extremfälle korrekt behandelt werden, wurden mehrere Testdurchläufe mit einem 2.7 GHz Intel Core i7 Prozessor und einer Internetverbindung mit einer Geschwindigkeit von bis zu 50 MBit/s durchgeführt. Im Folgenden werden einige dieser Eingabe- und Ausgabedaten zusammen mit der Berechnungsdauer aufgeführt und darauffolgend die Ergebnisse diskutiert. Die Einträge unter der Spalte Dauer sind der Durchschnittswert aus 10 Durchläufen pro Testfall. Nr. 1 2 3 4 5 6 Eingabe LogBox: voreingestellte Gewichtung, Ort: Stuttgart Mitte Bar: voreingestellte Gewichtung, Ort: Stuttgart Mitte Food-Truck: voreingestellte Gewichtung, Ort: Stuttgart Mitte Kinderbetreuung: voreingest. Gewichtung, Ort: Stuttgart Mitte LogBox: Min. Preis und die restl. Gewichtungen auf ’0’ setzen, Ort: Stuttgart Mitte Food-Truck: Preis und Bevölkerungsdichte auf ’10’ setzen , Ort: Stuttgart Mitte Ausgabe Silberburgstr. 70A, 70176 Stuttgart, Bewertung: 89.89% Canstatter Str. 46, 70190 Stuttgart, Bewertung: 92.47% Urbanstr. 94, 70190 Stuttgart, Bewertung: 87.68% Urachstr. 5, 70190 Stuttgart, Bewertung: 87.40% Konrad-AdenauerStr. 3, 70173 Stuttgart, Bewertung: 100.0% Schottstr. 81, 70192 Stuttgart, Bewertung: 99.75% Fehlermeldung: data no 0.1 s Fehlermeldung: Bitte geben Sie mind. einen Standortfaktor an 0.1 s Im Folgenden werden die Ergebnisse ausgewertet: Algorithmus 2: Optimaler Standort 7 LogBox: voreingestellte Gewichtung, Ort: München LogBox: alle Gewichtungen auf ’0’ setzen, Ort: Stuttgart Mitte Dauer 34.05 s 46.91 s 50.34 s 23.92 s 31.34 s 51.42 s 8 • Test 1: Normalfall LogBox Folgende Standortfaktoren sind voreingestellt: Preis (-10), Einkommen (-8), Bevölkerungsdichte (9), Einzugsgebiet (9), Anzahl Personen pro Haushalt (-1), Anteil an Singles (1), Anteil weiblich (2), Distanz öffentliche Verkehrsmittel (-5), Distanz Baumarkt (-3), Distanz Wohnheim (-1). Das Ergebnis des Mietpreises von 8,48 e pro m2 pro Monat ist realistisch niedrig. Die Abweichung vom Durchschnittswert von 10,46 e beträgt 18,92%. Auch das Einkommen ist mit 26694,17 e ein gutes Stück, nämlich 8,34% unter dem Durchschnitt. Die Bevölkerungsdichte lag dahingegen wie erwartet (positive Gewichtung) um 7,19% über dem Durchschnitt. Das Einzugsgebiet lag ebenfalls wie erwartet mit 25,42% über dem Durchschnitt. Die Dauer der Berechnung ist mit 34,05 s eine der schnelleren gewesen, was auch erwartet war, da bei dieser Dienstleistung im Gegensatz zu den anderen am zweitwenigsten Distanzen von Google zu überprüfen sind, was mitunter am meisten Zeit bei der Bewertung in Anspruch nimmt. • Test 2: Normalfall Bar Folgende Standortfaktoren sind voreingestellt: Preis (-10), Passanten pro Stunde (8), Alter 0-17 Jahre (3), Alter 18-39 Jahre (3), Verkehrsmittelbenutzung Auto (-2), Verkehrsmittelbenutzung Fahrrad (4), Bevölkerungsdichte (9), Einzugsgebiet (9), Distanz konkurrierende Bars (9), Distanz öffentliche Verkehrsmittel (-5), Distanz Arenen und Stadien (-1), Distanz Hochschulen (-1), Distanz Konzerthallen (-1), Distanz Sportvereine (-1). Hier waren ebenfalls die Ergebnisse alle wie erwartet und lagen je nach Vorzeichen der Gewichtung über oder unter dem Durchschnitt des Rests von Stuttgart Mitte. Die Zeit war mit 46,91 s relativ hoch, was einerseits an den vielen Standortfaktoren liegt, aber auch hier vor allem den Distanzüberprüfungen anzulasten ist. • Test 3: Normalfall Food-Truck Folgende Standortfaktoren sind voreingestellt: Preis (-10), Passanten pro Stunde (8), Autos pro Stunde (4), Temperatur Sommer (3), Temperatur Winter (-3), Niederschlag (-3), Bevölkerungsdichte (9), Einzugsgebiet (9), Anzahl Personen pro Haushalt (-1), Anteil an Singles (-1), Distanz Fastfood (4), Distanz Döner (4), Distanz Arenen und Stadien (-1), Distanz Hochschulen (-1), Distanz Konzerthallen (-1), Distanz Sportvereine (-1). Auch hier waren die Ergebnisse alle wie erwartet und lagen je nach Vorzeichen der Gewichtung über oder unter dem Durchschnitt. Die Zeit war mit 50,34 s am höchsten, was einerseits an den meisten Standortfaktoren liegt und zusätzlich bei dieser Dienstleistung auch die meisten Distanzen berechnet werden müssen. • Test 4: Normalfall Kinderbetreuung Folgende Standortfaktoren sind voreingestellt: Preis (-10), Alter 0-17 Jahre (6), Alter 18-39 Jahre (6), Verkehrsmittelsbenutzung Auto (3), Verkehrsmittelsbenutzung Fahrrad (2), Bevölkerungsdichte (9), Einzugsgebiet (9), Anteil in einer Beziehung lebender Einwohner (2), Anzahl Personen pro Haushalt (5), Verkehrsunfälle (-2), Kriminalitätsrate (-2), Distanz andere Kinderbetreuungen (4). Auch bei dieser Dienstleistung waren die Ergebnisse alle erwartungsgemäß. Die Zeit war mit 23,92 s die niedrigste. Die Begründung ist analog zu den anderen Fällen. Die wenigsten Standortfaktoren, die aus der Datenbank gelesen und verarbeitet werden mussten und auch die Distanz-Abfragen waren sehr gering. • Test 5: Prüfung mit nur einem Standortfaktor Bei diesem Test wurden alle Gewichtungen auf 0 gesetzt, mit einer Ausnahme, dem Preis (-10). D. h. es sollte der niedrigste Preis in ganz Stuttgart-Mitte gefunden werden. Dies wurde erreicht. Der Preis liegt bei 8,37 e. Wenn man manuell in der Datenbank nachschaut, ist dies tatsächlich der niedrigste Preis. • Test 6: Prüfung mit nur zwei Standortfaktoren Bei diesem Test wurden alle, bis auf zwei Gewichtungen auf 0 gestellt. Die zwei Gewichtungen waren der Preis (10) und die Bevölkerungsdichte (10). Auch hier wurde das erwartete Ergebnis erzielt. Der Preis liegt bei 12,54 e und ist damit einer der höchsten in der Datenbank, wobei die Bevölkerungsdichte ebenfalls einen der höchsten Einträge in der Datenbank darstellt. • Test 7: Ungültige Eingabe: Ort Bei Eingabe eines falschen Ortes, erscheint die Fehlermeldung ”no data”, was unseren Erwartungen entsprach, da nur die Testumgebung Stuttgart-Mitte in der Datenbank abgebildet ist. Die Überprüfung geht wie erwartet schnell von statten, da nur überprüft werden muss, ob der jeweilige Längen- und Breitengrad in der Datenbank vorhanden ist. • Test 8: Ungültige Eingabe: kein Standortfaktor ausgewählt Wenn alle Gewichtungen auf 0 gestellt sind, macht eine Standortanalyse keinen Sinn. Das Ergebnis wäre dann zufällig. Das Programm gibt hier ebenfalls eine Fehlermeldung aus und bittet um die Eingabe von mindestens einem Standortfaktor, d. h. einer Gewichtung ungleich Null. Die Überprüfung geht hier sehr schnell, da nur die Eingabe überprüft werden muss. 8 Eine weitere Erweiterung der Software liegt in der Integration weiterer Dienstleistungen. Aufgrund des Pilotprojektcharakters der Anwendung wurden vier Dienstleistungen als Testfälle implementiert und betrachtet. Ein praktisches Problem stellt die begrenzte Anzahl an täglichen Google-API Anfragen dar10 . Diese sind wichtig für die Angabe konkurrierender und förderlicher Dienstleistungen. Eine Lösung besteht in der Implementierung eines Cashing Systems, welches unabhängig von Anfragen sukzessive mit der Google-Api interagiert und die Ergebnisse in der Datenbank für spätere Anfragen zur Verfügung stellt. ACKNOWLEDGMENTS Die Autoren bedanken sich bei Dipl.-Ing. Steffen Braun, Dipl.-Inf. Felix Baumann und M. Sc. Julian Eichhoff für ihre zahlreichen Vorschläge und Hilfestellungen während der Durchführung dieses Projekts. L ITERATUR [1] H. Buhl, M. Röglinger, F. Moser, and J. Heidemann. Big data. WIRTSCHAFTSINFORMATIK, 55(2):63–68, 2013. [2] P. D. Converse. New laws of retail gravitation. The Journal of Marketing, 14(3):379–384, 1949. [3] H. Gondring. Immobilienwirtschaft - Handbuch für Studium und Praxis. Vahlen, München, 2011. [4] D. L. Huff. A probabilistic analysis of shopping center trade areas. Land economics, 39(1):81–90, 1963. [5] IBM, P. Zikopoulos, and C. Eaton. Understanding Big Data: Analytics for Enterprise Class Hadoop and Streaming Data. McGraw-Hill Osborne Media, 1st edition, 2011. [6] D. Karamshuk, A. Noulas, S. Scellato, V. Nicosia, and C. Mascolo. Geospotting: mining online location-based services for optimal retail store placement. In Proceedings of the 19th ACM SIGKDD international conference on Knowledge discovery and data mining, KDD ’13, pages 793–801, New York, NY, USA, 2013. ACM. [7] Y. Qu and J. Zhang. Trade area analysis using user generated mobile location data. In Proceedings of the 22nd international conference on World Wide Web, WWW ’13, pages 1053–1064, Republic and Canton of Geneva, Switzerland, 2013. International World Wide Web Conferences Steering Committee. [8] W. Reilly. The Law of Retail Gravitation. University Microfilms, 1953. [9] D. Reymann. Wettbewerbsanalysen für kleine und mittlere Unternehmen (KMUs): Theoretische Grundlagen und praktische Anwendung am Beispiel gartenbaulicher Betriebe. BoD-Books on Demand, 2009. [10] W. verbirgt sich hinter dieser Kategorie. Jahrestagung des Arbeitskreises geographische Handelsforschung vom 18.06.-19.06. 2009 in Wrürzburg. Nachhaltigkeit von Handelsimmobilien, page 47, 2009. [11] I. Willand. Statistisches Jahrbuch 2013, Oktober 2013. [12] S. Zöller. Erlebnishandel im Automobilvertrieb: Machbarkeitsstudie und Nutzungskonzeption für ein Autothemencenter. Springer DE, 2006. FAZIT Eine Desktop-Anwendung für eine rechner- und webgestützte Standortanalyse wurde entwickelt und evaluiert. Diese kann sowohl in dem wirtschaftlichen als auch in dem öffentlichen Sektor verwendet werden. Die Anwendung kann von einem Existenzgründer oder einer Stadtverwaltung als Entscheidungshilfe bei der Standortbestimmung für eine spezifische Dienstleistung zu Rate gezogen werden. Die Lösung der Standortproblematik mittels der Erhebung und Auswertung von öffentlich verfügbaren und Nutzer generierten Daten ist eine Möglichkeit mit Zukunftsperspektiven. In Anbetracht der rasanten Fortschritte in der Computertechnologie, der Ausbreitung von sozialen Netzwerken, der Zunahme an Daten speichernden Applikationen, sowie zukünftigen Stadtsystemen, die ihrerseits Daten generieren, stellt der verwendete Ansatz eine berechtigte Herangehensweise der Problemstellung dar. Insbesondere liegt die Zukunftsfähigkeit des Ansatzes in der Nutzung von öffentlichen Ressourcen. Diese sind bereits heute in einer großen Fülle vorhanden und ihre Anzahl wird in den kommenden Jahrzehnten deutlich anwachsen. Die Verarbeitung dieser Ressourcen in der Wissenschaft und Forschung im Bereich der Standortbestimmung ist von relevanter Natur. 9 AUSBLICK A Für die Erzielung qualitativ hochwertiger und präziser Ergebnisse seitens der Anwendung müssen folgende Ergänzungen und Optimierungen in Angriff genommen werden. Insbesondere ist die Entwicklung einer mobilen Anwendung zur Erfassung von Nutzer generierten Daten unabdingbar. Neben Sernsordaten können über die mobile Anwendung ebenfalls Bedarfe ermittelt werden, welche in die Bewertung der Analyse hineinflißen. Den Nutzern müsste hierfür in der Anwendung die Möglickeit geboten werden, den Wunsch einer speziellen Dienstleistung an einem bestimmten Ort mitteilen zu können. Diese Daten wurden von uns realitätsnah simuliert. Hierfür muss ein Lösungsansatz erarbeitet werden, wie Nutzer dazu gebracht werden können, ihre Daten permanent loggen zu lassen. Dies impliziert eine Auseinandersetzung mit Privatsphähre- und Datenschutzproblemen. Eine Spezifikation für eine solche mobile Anwendung wird unsererseits erstellt. Des weiteren erhöht die Vielzahl an disjunkten Datenquellen die Genauigkeit der Analyse. Dieses Ziel kann mittels der Erschließung neuer Datenquellen erreicht werden. A NHANG 1. Abbildung 3: Datenfluss und Zusammenspiel zwischen der Anwendung und externen Quellen 2. Abbildung 4: Testumgebung Stuttgart-Mitte 3. Abbildung 5: Screenshot der Anwendung: Auswertung 4. Abbildung 6: Screenshot der Anwendung: Map/Visualisierung 10 Google Places API: 1000 Anfragen pro Tag, Google Geocoding API: 2,500 Anfragen pro Tag, 10 Anfragen pro Sekunde 9 Abbildung 3: Datenfluss und Zusammenspiel zwischen der Anwendung und externen Quellen Abbildung 4: Testumgebung Stuttgart-Mitte 10 Abbildung 5: Screenshot der Anwendung: Auswertung Abbildung 6: Screenshot der Anwendung: Map/Visualisierung 11