System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. ---> System.Data.SqlClient.SqlException: Invalid column name 'AlsoVisibleInDomains'.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)
   at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
   --- End of inner exception stack trace ---
   at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
   at System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass41_0.<GetResults>b__0()
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__31_0()
   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()
   at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
   at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector)
   at MuME2.Data.Managers.CachingManagerBase`2.GetDictionary() in D:\a\1\s\src\Legacy\MuME2.Core\Data\Managers\CachingManagerBase.cs:line 70
   at MuM.Foundation.Caching.Services.CustomCacheService.Get[T](String key, GetFromSourceDelegate`1 getDelegate) in D:\a\1\s\src\Foundation\Caching\code\Services\CustomCacheService.cs:line 260
   at MuME2.Data.Managers.CachingManagerBase`2.get_CachedDictionary() in D:\a\1\s\src\Legacy\MuME2.Core\Data\Managers\CachingManagerBase.cs:line 72
   at MuME2.Data.Managers.CachingManagerBase`2.All() in D:\a\1\s\src\Legacy\MuME2.Core\Data\Managers\CachingManagerBase.cs:line 67
   at MuME2.Data.Managers.EventTypeManager.All() in D:\a\1\s\src\Legacy\MuME2.Core\Data\Managers\EventTypeManager.cs:line 26
   at MuME2.Data.Managers.EventTypeManager.SingleByName(String name) in D:\a\1\s\src\Legacy\MuME2.Core\Data\Managers\EventTypeManager.cs:line 90
   at MuME2.Data.Managers.EventManager.SingleForDetails(Uri url) in D:\a\1\s\src\Legacy\MuME2.Core\Data\Managers\EventManager.cs:line 73
   at MuM.Project.Website.Services.SeoService.GetCurrentEvent() in D:\a\1\s\src\Project\Website\code\Services\SeoService.cs:line 216
   at MuM.Project.Website.Services.SeoService.GetCanonicalUrl(Base_Page page, String customHost) in D:\a\1\s\src\Project\Website\code\Services\SeoService.cs:line 188
   at MuM.Project.Website.Services.SeoService.RenderHrefLangTags(Base_Page page) in D:\a\1\s\src\Project\Website\code\Services\SeoService.cs:line 65
   at Mum.Relaunch.Web.Controllers.Framework.DefaultPageController.HtmlHead() in D:\a\1\s\src\Legacy\Mum.Relaunch.Web\Controllers\Framework\DefaultPageController.cs:line 111
   at lambda_method(Closure , ControllerBase , Object[] )
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c.<BeginInvokeSynchronousActionMethod>b__9_0(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__11_0()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_1.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_1.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_6.<BeginInvokeAction>b__3()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_1.<BeginInvokeAction>b__5(IAsyncResult asyncResult)
    

Wer suchet – der findet!

von Frank Markus | Montag, 18. Mai 2020

Geoportale und Bereitstellung geographischer Daten in Zeiten von Corona - bequem, einfach benutzbar und leicht verständlich muss es sein.

"Ein Geoportal ist ein spezielles Webportal, das eine Suche nach und einen Zugriff auf digitale geographische Informationen (Geodaten) und auf geographische Dienste (Darstellung, Editierung, Analyse) über das Internet mit Hilfe eines Webbrowsers ermöglicht. 

Ein Geoportal stellt somit ein Online-Geoinformationssystem (GIS) dar und ist eine Ausprägung eines Web GIS, bei dem der Webbrowser als GIS-Client fungiert." – soweit Wikipedia zum Thema Geoportal.

Und das trifft haargenau unser neues MapEdit Portal. Hier geht es aber nicht um eine Werbung für unsere Produkte, sondern um die Klärung der wichtigsten Frage rund um Geoinformationen: Warum müssen die Programme, Apps, Weblösungen rund um Geoinformationssysteme fast ausnahmslos so wahnsinnig kompliziert sein?

Ein Bild sagt mehr ...

Aktuell sind Kartendarstellungen mit Hilfe solcher Portale in aller Munde: Bedingt durch Corona und die Verbreitung von (Des-)Informationen mittels Internet empfinden User die geographische Darstellung von Verbreitung und Infektionsherden als sehr hilfreich. 

Als eine der ersten hat sich hier die Johns Hopkins Universität in Maryland, USA mit einem Geoportal platziert – andere folgten mit mehr oder weniger gezielten Informationen. Egal ob man/frau sich informieren möchte, wo rote oder grüne Landkreise sind, ein Geoportal gibt auch darüber graphisch Auskunft. Mehr als nur Zahlenkolonnen und langwierige Texte.

Zentraler Punkt ist jedoch die Nutzbarkeit des Portals, denn Geoportale sollten für Gelegenheitsanwender, den "Otto Normalverbraucher", nutzbar sein. Aber da unterscheiden sich die Anbieter doch extrem: Viele Portale verlangen den Auskunftssuchenden enorme Kenntnisse ab, was die Bereitstellung der richtigen Daten betrifft. Hier treffen Welten aufeinander! 

Zum einen hochspezialisierte Experten, die ihre akribisch gesammelten Daten in aller Tiefe und Breite darstellen wollen, was immer in Unübersichtlichkeit endet. Und zum anderen der oben genannte und viel zitierte Otto Normalverbraucher, der "nur mal eben gucken" will. 

Da fragt man/frau sich "Warum muss das so kompliziert und langsam sein, wenn Google Maps das alles viel schneller kann?". Eine sehr berechtigte Frage, zumal alle Hersteller die gleichen Möglichkeiten in der Entwicklung haben. 

Quelle: https://www.geoportal.rlp.de/mediawiki/index.php/Zentrale_Stelle_GDI-RP

Bequem und einfach muss es sein

Laut Duden sollte ein Internet-Portal "… so angelegt (sein), dass man … bequem auf eine Vielzahl von Informationen zu einem bestimmten Thema zugreifen kann". Jetzt lässt sich vortrefflich über den Begriff "bequem" streiten, aber eine gewisse Leichtigkeit, Einfachheit, Mühelosigkeit sollte doch vorhanden sein, oder?

Leider ist das nicht so! Es benötigt einfach eine neue Generation von Entwicklern. So entwickelt z.B. der 17-Jährige Avi Schiffmann eine Corona-Informationsseite, die das Millionen-US-Dollar-Budget der Johns Hopkins Universität ziemlich altbacken aussehen lässt: https://ncov2019.live/map. Es ist schnell, bequem, modern und enthält die gleichen Informationen wie die JHU-Seite, ist aber übersichtlicher und einfacher in der Nutzung.

Deshalb hat sich die Mensch und Maschine Infrastruktur GmbH mit einem jungen Team von Entwicklern entschieden, diese Leichtigkeit zu erschaffen. Das MapEdit Portal ist genau so konzipiert, wie man es von Google Maps und vergleichbaren Anwendungen von Microsoft kennt. Das Prinzip ist 80/10 (nicht Pareto): Einem 80-Jährigen erkläre ich in 10 Minuten die Nutzung und er kann damit problemlos arbeiten. Betreiber des MapEdit Portals sind Städte und Gemeinden, private Organisationen wie Fremdenverkehrsbüros und Geodatenvermarkter (zum Beispiel für Marketingaktivitäten, Standortfindung usw.). 

Quelle: Mensch und Maschine Infrastruktur, Stuttgart, Mai 2020

Design Thinking

Dank "Full responsive"-Oberfläche ist die Anwendung auf allen Endgeräten (PC, Tablet, Smartphone) identisch. Es ist nicht als Expertensystem designt worden, um somit Gelegenheitsanwendern, Bürgern, Touristen und anderen ein nutzbares Werkzeug an die Hand zu geben. Es soll mit dem Finger genauso einfach bedient werden wie mit Maus und Tastatur. Es ist rasend schnell und flexibel in der Anwendung, Darstellung und der Suche von Informationen.

Getreu dem Motto aus der Bergpredigt: Wer suchet – der findet! (Mt 7,7-11)

Kommentare

Bitte melden Sie sich an, um einen Kommentar zu erstellen. Sie haben noch keine Zugangsdaten? Dann registrieren Sie sich bitte hier.