24115 Die Bekannte Binäre Optionen


Ich habe eine csv-Datei mit räumlichen Bereichsinformationen in varchar importiert und dann varchar (max) Werte in varbinary (max) umgesetzt, indem du 0x zu varchar (max) Werten vor der Konvertierung hinzufügst. Bis dahin, abgesehen von der 0x am Anfang, sieht die Daten in varbinary (max) Spalte genau die gleiche wie die varchar (max) eins in konvertiert in Text. Jetzt laufe ich das folgende Skript: Wo WKB die varbinary (max) Spalte ist. Das Ausführen des obigen Skripts wirft diesen Fehler auf: Die bekannte Binärdatei (WKB) ist nicht gültig Die Datenquelle ist aus der Open Street Map, ohne Zweifel sind sie korrekte Bereichsdaten. Also nehme ich an, es muss etwas falsch sein, was ich tue oder ich vermisse einen Punkt, um WKB in Geometrie-Datentyp umzuwandeln. Könnte jemand helfen bitte Ich nehme an, das Problem ist bei der Umwandlung der Varchar-Daten in Varbinary Sie konvertieren die tatsächliche Zeichen-Darstellung der binären Daten, anstatt nur die Änderung der Typ in binäre. Wenn Sie also die Daten 0xDEADBEEF in Ihrer Varchar-Spalte haben, dann konvertieren (varbinary (max), DEADBEEF) konvertieren die ascii Zeichen Darstellungen in binär. Was Sie stattdessen tun möchten, konvertiert den Hex-String in binär, was mit dem Style-Parameter von convert möglich ist. SELECT konvertieren (varbinary (max), DEADBEEF, 2) sollte was tun, was du deine varchar wkb Daten in echte binary umwandeln möchtest. Mein Mitarbeiter bemerkte, dass die ESRI Line WKB fehlerhaft ist, enthält nicht spezifizierte nachlaufende Daten und da hes nicht auf GIS aktiv ist. SE, ich habe seine Bemerkungen als Antwort veröffentlicht. Ich warte ein paar Tage auf Kritik, bevor ich es akzeptiere, falls jemand eine endgültigere Reaktion hat. In der Zwischenzeit kann ich die Ausnahme zwischen ESRI Line Geometry WKB und SqlServer. Types neu erstellen, indem ich eine brandneue Feature-Class, die es eine einzelne Linie Geometrie, und Bingo --- seine wiederholbar. Jedes Mal. Aber ich habe den ganzen Tag gestern gegessen und fand keine Bestätigung dafür. Ich muss ein schlechter Googler sein Wenn ich versuche, eine EsriPolylineGeometry in IWkb umzuwandeln, dann geh durch die Bewegungen des Exportierens in wkbBytes und verbrauchen sie in SqlServer. Types. SqlGeometry. STGeomFromWKB () die Konvertierung scheitert immer mit dem Fehler bekannte Binärdatei (WKB ) Ist nicht gültig. Allerdings, wenn ich den gleichen Ansatz verwenden, um wkbBytes zu bekommen, funktioniert es gut, wenn ich es durch SharpMap-Konverter schicke. Ive getan alles, was ich mir vorstellen kann, um schlechte Geometrien auszuschließen, und ich denke sicher, dass jemand in dieses vorher gegangen ist. Auf der ESRI-Seite habe ich mit ITopologyOperator versucht,.Simplify () und. Buffer (0) auszuführen. Und macht keinen Unterschied. Ive auch versucht Hinzufügen von. MakeValid () hinter STGeomFromWKB () ohne Gebrauch. Und es gibt auch keinen Unterschied von entweder IWkb. ExportToWkb () oder der Alternative IGeometryFactory. CreateWkbVariantFromGeometry (). Also meine Frage ist: Ist die WKB wirklich ungültig Wenn ja, dann warum ist es richtig umwandeln in SharpMap Die WKB kommt aus ESRI sieht so aus: Im Folgenden zeigt der erste Codeblock den fehlerhaften Ansatz, wenn ich versuche, mit SqlGeometrys statische Methode zu konsumieren STGeomFromWKB (). Der zweite Block zeigt den SharpMap-Ansatz, der funktioniert, wenn er die gleichen wkbBytes-Daten verbraucht. Dieser Ansatz mit SqlServer. Types scheitert .. Aber dieser Ansatz mit SharpMap-Konverter funktioniert. Beide Ansätze akzeptieren Polygon-Geometrien, aber ich hoffe, dass jemand weiß, wie man die SqlServer. Types Ansatz, um auf Line Geometrien zu arbeiten, wie wir haben andere Projekte bereits mit dieser Bibliothek zu bekommen. Ich zögere nicht, SharpMap-Konverter zu benutzen, wenn das die Antwort ist, aber es stört mich, dass eine unbekannte Bedingung SqlServer. Types verursacht, um im Kontext von Liniengeometrien zu scheitern. Fragte am 12. Juli um 22:09 Keine Beleidigung, aber eigentlich die Schlussfolgerungen deines Mitarbeiters darüber, wie etwas er denkt, dass es funktionieren soll, macht es nicht offiziell, wie es funktionieren sollte. Dafür verweisen wir auf die OGC-Spezifikationen. Wenn Sie auf die Seiten 66-70 verweisen, finden Sie die Spezifikation für das ältere Dokument oder die Seiten 65- 72 für die neuere Spezifikation. Um es zu vervollständigen, gibt es keinen Teil, der das wkb daran hindert, nachlaufende Daten zu haben. In der Tat, die Spezifikation enthält Zähler für jedes einzelne Element, so dass Sie genau wissen, wie viel von der binären Blob Sie sollten analysieren. Es geht hinunter sogar ein Byte für die Byte-Bestellung, so dass man zwischen Endianness der binären Darstellung jedes inneren Geometrie-Elements wechseln kann, wie man es pausiert. Mein Punkt ist, dass Sie immer genau wissen, wie viel davon Sie lesen und wie Sie sein sollten Interpretieren sie. Microsoft hat sich in ihrem Parser entschieden, den Binärinhalt weiter zu verbrauchen, obwohl nichts in der OGC-Spezifikation sagt, dass es sollte. Dann haben sie sich entschieden, diese Bedingung für ungültig zu halten. Sind sie falsch Nun, das ist, wie sie es interpretierten, obwohl der binäre Blob selbst die Spezifikation befriedigt. Das WKB, das von ESRI zur Verfügung gestellt wird, ist ungültig, für diesen speziellen Fall ist es falsch. Übrigens nimmt jeder einzelne WKB-Parser da draußen (GEOS, PostGIS, GDALs, ESRIs, SharpMaps, Autodesks, etc.) diese Bedingung als OK an. Hier ist dein Beispiel mit PostGIS: Jetzt gehe ich zufällige Binärdaten am Ende deiner Geometrie hinzu: Der Bug ist eigentlich im Microsoft Parser. Im Geiste der guten Debatte, aber du musst zugeben, das sind ziemlich nutzlos 039s am Ende des ESRI WKB-Streams. Wenn ich den gleichen Ansatz verwende, um ESRI-Polygon-Geometrie umzuwandeln, gibt es einen sauberen Stream zurück (zumindest in den Augen des MS-Parsers). Aber ich bin vollkommen einig, dass es gültig ist, wo es zählt. In einem Versuch, den besten Frieden zu erreichen, stelle ich vor, dass ESRI einen schmutzigen Strom hat, aber MS hat einen tyrannischen Parser. Es ist immer interessant, wenn zwei Macht vorwärts kommen im Zentrum Eis. Heh ndash elrobis Sie sind Recht über die Bytes, die ziemlich nutzlos sind. Nicht sicher, woher sie kommen (einige interne Implementierung Detail wahrscheinlich). Wenn du nitpick willst, würde ich eigentlich sagen, dass jedes einzelne Byte verwendet wurde, um Endianness in jedem einzelnen Geometrieelement zu beschreiben, ist auch ziemlich dumm. Ich kann sehen, wie ein binärer Blob aus verschiedenen Systemen kommen kann und somit anders zu unterscheiden. Aber ich denke, dass das Hinzufügen zu jedem Element ist Abfall. Ich kann sehen, wie du am Anfang aber eins haben würdest. Ich verstehe, warum es dort ist, aber das wäre ein Thema für eine andere Diskussion insgesamt. Ndash Ragi Yaser Burhum Jul 14 12 at 23:59 Grundsätzlich antwortete meine Mitarbeiterin meine Hauptfragen, also schmecke ich sie hier, um den Thread zu beantworten. Hoffentlich werden ein paar Leute up-vote es, geben ihm einige zusätzliche Glaubwürdigkeit. Q1: Ist die ESRI Line Geometry als WKB wirklich ungültig Ja. Der wkb sagt, dass es 9 Punkte in der Linie gibt, und dann sollte der Parser 9 Punkte lesen. MS (rechtmäßig) erkennt mehr Daten (die 10 0s) und erzählt seine durcheinander gebracht. Die 10 0s sind 5 Bytes im ursprünglichen Array. Entferne die letzten 10 0s, und seine gute, wie .. Q2: Wenn die WKB wirklich ungültig ist, warum ist die SharpMap-Bibliothek in der Lage, sie umzuwandeln, ich bin mir sicher, warum sharplib nicht versagt: das Format diktiert, dass es 9 Punkte gibt. Wenn du nicht wählerisch bist, hörst du einfach auf zu lesen und alles, was du dandy hast. Und. Warum würdest du eigentlich bestätigen, dass es keine Bytes mehr gibt. Also ich bin mir sicher, dass SharpLib es nicht genau behandelt. Sie hören einfach auf zu lesen nach den 9 Punkten, und alles scheint zu funktionieren. Danke an MS für nicht nur verlassen Bits amp Bytes herumhängen. Wie für WARUM die ESRI WKB fehlerhaft ist, bekam ich ein paar Vermutungen: Sie weisen x die Anzahl der Bytes zu einem Zeitpunkt zu und sind nicht genau über das Schließen des Byte-Arrays. ODER. Sie. Beim Zählen der Anzahl der Bytes nehmen sie die Körperlänge und fügen die Header-Länge hinzu (1 Byte encodinginfo, 1 Byte Geom-Typ, 8 Bytes Anzahl der Punkte in der Zeile), und irgendwie beim Zählen des Körpers, enthalten sie die Länge Des Headers. Verursachung der Doppelkopfgröße. Jedenfalls ist das nur Spekulationen und ich bin mir nicht sicher, was die Info gut ist, denn wir können sowieso nichts dagegen machen :-) antwortete am 13. Juli um 15: 51Wenn du eine Formdatei als räumliche Datenquelle spezifizierst und sie sich auf deinem befindet Lokaler Computer, werden die räumlichen Daten automatisch in den Bericht eingebettet. Um räumliche Daten aus einer ESRI-Datei dynamisch zu verwenden, musst du folgendes ausführen: Laden Sie sowohl die. shp-Datei als auch die. dbf-Datei in denselben Ordner auf einem Berichtsserver und verknüpfen Sie dann mit der. shp-Datei als räumliche Datenquelle. Weitere Informationen zum Thema finden Sie im folgenden Artikel, Maps (Report Builder 3.0 und SSRS): msdn. microsoften-uslibraryee240845 (SQL.105).aspx Wenn Sie irgendwelche Fragen haben, können Sie mich gerne informieren. Als Antwort von Eileen Zhao markiert Sonntag, 11. Juli 2011 um 4:38 Uhr Alle Antworten Wenn Sie eine Formdatei als räumliche Datenquelle angeben und sich auf Ihrem lokalen Computer befindet, ist die räumliche Daten werden automatisch in den Bericht eingebettet. Um räumliche Daten aus einer ESRI-Datei dynamisch zu verwenden, musst du folgendes ausführen: Laden Sie sowohl die. shp-Datei als auch die. dbf-Datei in denselben Ordner auf einem Berichtsserver und verknüpfen Sie dann mit der. shp-Datei als räumliche Datenquelle. Weitere Informationen zum Thema finden Sie im folgenden Artikel, Maps (Report Builder 3.0 und SSRS): msdn. microsoften-uslibraryee240845 (SQL.105).aspx Wenn Sie irgendwelche Fragen haben, können Sie mich gerne informieren. Als Antwort von Eileen Zhao markiert Sonntag, 11. Juli 2011 18:20 Uhr Ich habe diesen Fehler erlebt, auch wenn lokale Daten in den Bericht eingebettet sind. Die potenzielle Ursache kann nicht die einzige sein. Sonntag, 8. Januar 2012 um 18:18 Uhr Einige große Shp-Dateien haben diesen Fehler verursacht, wenn die Kartensteuerung so eingestellt ist, dass sie weniger Platz einnimmt. Neugierig kann das Problem weggehen, wenn ein etwas unterschiedlicher Platzeinsparung gewählt wird. Es scheint, als ob der Algorithmus, der verwendet wird, um die Kartendaten zu komprimieren, ungültige Binärdaten auf einigen Einstellungen ergeben kann, aber korrekte Daten mit leicht unterschiedlichen Einstellungen liefert. Vorgeschlagen als Antwort von Stefan Granath Sonntag, 12. Dezember 2015 4:19 AM Donnerstag, 12. Januar 2012 03:47 Uhr Microsoft führt eine Online-Umfrage durch, um Ihre Meinung über die Msdn-Website zu verstehen. Wenn Sie sich für eine Teilnahme entscheiden, wird Ihnen die Online-Umfrage vorgestellt, wenn Sie die Msdn-Website verlassen. Möchten Sie teilnehmen 2017 Microsoft. Alle Rechte vorbehalten.

Comments