Monday 16 October 2017

24115 The Ben Binarie Options Noti


Ho importato un file CSV contenente informazioni sulla zona spaziale in varchar, poi convertito valori varchar (max) a varbinary (max) con l'aggiunta di 0x a varchar (max) valori prima della conversione. Da allora, a parte il 0x in principio, i dati varbinary (max) colonna sembra esattamente lo stesso come varchar (max) uno in convertito in testo. Ora ho eseguito il seguente script: dove WKB è la colonna varbinary (max). L'esecuzione dello script sopra genera questo errore: L'ingresso binario noto (WKB) non è valido La fonte dei dati è da Open Street Map quindi senza dubbio sono dati dell'area corretti. Quindi presumo ci deve essere qualcosa di sbagliato in quello che sto facendo o mi manca un certo punto per convertire WKB alla geometria tipo di dati. Qualcuno potrebbe aiutare per favore Suppongo che il problema è quando la conversione dei dati varchar per varbinary si sta convertendo la rappresentazione carattere effettivo dei dati binari, piuttosto che solo cambiando il tipo di binario. Ad esempio, se avete i dati 0xDEADBEEF nella colonna varchar, poi facendo convert (varbinary (max), deadbeef) permette di convertire le rappresentazioni caratteri ASCII in binario. Che cosa si vuole fare, invece è convertire la stringa esadecimale in binario, che è possibile utilizzare il parametro di stile del convertito. Selezionare Converti (varbinary (max), deadbeef, 2) dovrebbe fare ciò che si desidera convertire i dati varchar WKB in reale binary. My collega notato l'ESRI linea WKB malformato contiene i dati di trascinamento non specificati, e dal momento che hes non è attivo sul GIS. SE, ho postato le sue osservazioni come una risposta. Ill aspettare qualche giorno per le critiche prima di accettare che in caso qualcuno ha una reazione più definitivo. Nel frattempo, posso ricreare l'eccezione tra ESRI Linea Geometria WKB e SqlServer. Types facendo una nuova feature class, dandogli una sola geometria delle linee, e bingo --- la sua ripetibile. Ogni volta. Ma ho Googled questo tutto il giorno ieri e non ha ancora trovato alcuna conferma di questo. Devo essere un cattivo Googler Quando provo conversione di un esriPolylineGeometry a IWkb, poi passare attraverso i movimenti di esportazione in wkbBytes e consumare in SqlServer. Types. SqlGeometry. STGeomFromWKB () la conversione non riesce sempre con l'errore noto binario (WKB ) ingresso non è valido. Tuttavia, se uso lo stesso approccio per ottenere wkbBytes, funziona benissimo quando invio tramite convertitori SharpMap. Ive fatto tutto quello che posso immaginare per escludere-out geometrie poveri, e Im pensiero sicuramente qualcuno ha incontrato questo prima. Sul ESRI-side, Ive ha provato utilizzando ITopologyOperator per effettuare. Simplify () e. Buffer (0). e fa né una differenza. Ive ha anche provato ad aggiungere. MakeValid () dietro STGeomFromWKB () per nessun uso. E non vi è alcuna differenza sia da IWkb. ExportToWkb () o il IGeometryFactory. CreateWkbVariantFromGeometry alternativo (). Quindi la mia domanda è: E 'la WKB davvero valida Se è così, allora perché è la conversione correttamente SharpMap Il WKB uscendo da ESRI si presenta così: Sotto, il primo blocco di codice mostra l'approccio in mancanza quando si tenta di consumare utilizzando SqlGeometrys metodo statico STGeomFromWKB (). Il secondo blocco mostra l'approccio SharpMap, che funziona quando si consumano i dati stessi wkbBytes. Questo approccio utilizza SqlServer. Types fallisce .. Ma questo approccio utilizzando convertitori SharpMap funziona. Entrambi gli approcci accettano geometrie poligonali, ma Im sperando che qualcuno sa come ottenere l'approccio SqlServer. Types di lavorare su geometrie di linea, come abbiamo altri progetti già utilizzando quella libreria. I wont esitate ad utilizzare convertitori SharpMap se questa è la risposta, ma mi dà fastidio che una condizione sconosciuta sta causando SqlServer. Types a fallire nel contesto delle geometrie di linea. chiesto 12 luglio 12 alle 22:09 Senza offesa, ma, in realtà, le conclusioni del vostro collega di lavoro su come qualcosa che pensa dovrebbe non funziona rendere il mezzo ufficiale dovrebbe funzionare. Per questo, si fa riferimento alle specifiche OGC. Se si fa riferimento alle pagine 66-70 troverete le specifiche per il documento più vecchio, o le pagine 65- 72 per la specifica più recente. Per riassumere tutto, non vi è alcuna parte che vieta la wkb di avere i dati finali. Infatti, la specifica include i contatori per ogni singolo elemento in modo da sapere esattamente quanta parte del blob binario si dovrebbe essere l'analisi. Si scende a cui anche un byte per l'ordinazione di byte in modo da poter passare da endianness della rappresentazione binaria di ogni elemento geometria interna come si analizza Il mio punto è che sa sempre esattamente quanto di esso si dovrebbe essere la lettura e come si dovrebbe essere interpretandolo. Microsoft ha scelto, nella loro parser, per continuare a consumare il contenuto binario anche se nulla nella specifica OGC dice che dovrebbe. Poi hanno scelto di prendere in considerazione tale condizione non valida. Sono sbagliato Beh, questo è il modo in cui interpretarono anche se il blob binario si fa soddisfare le specifiche. Dire la WKB fornito da ESRI non è valido, per questo caso particolare, non è corretto. Tra l'altro, ogni singolo altro parser WKB là fuori (GEOS, PostGIS, GDALs, ESRIs, SharpMaps, Autodesks, ecc) accetta questa condizione come OK. Ecco il tuo esempio usando PostGIS: Ora sto per aggiungere eventuali dati binari casuali alla fine della geometria: Il bug è in realtà nel parser Microsoft. Nello spirito di buon dibattito, però, devi ammettere quelle sono 039s abbastanza inutile, alla fine di quel flusso di ESRI WKB. Se io uso lo stesso metodo per convertire la geometria ESRI poligono, restituisce un flusso pulito (almeno, agli occhi del parser MS). Ma Sono pienamente d'accordo che sia valido dove conta. Nel tentativo di raggiungere il miglior pace, io sostengono che ESRI ha un flusso sporca, ma MS ha un parser tirannico. It39s sempre interessante quando due attaccanti potenza si combinano a centro campo. eh ndash elrobis 14 lug 12 alle 22:39 Hai ragione di quei byte che sono abbastanza inutile. Non so dove sono provenienti da (qualche dettaglio interno di implementazione probabilmente). Se si vuole essere pignoli, vorrei davvero dire che ogni singolo byte usato per descrivere endianness in ogni singolo elemento geometrico è abbastanza stupida, troppo. Posso vedere come un blob binario può provenire da sistemi diversi e quindi serializzare in modo diverso. ma credo che l'aggiunta ad ogni elemento è un rifiuto. Posso vedere come si avrebbe uno all'inizio però. Io non capisco perché è lì, ma che sarebbe un argomento per una discussione del tutto diversa. ndash Ragi Yaser Burhum 14 luglio 12 alle 23:59 Fondamentalmente il mio collega ha risposto alle mie domande principali, in modo da Im loro pugni in qui per il bene di rispondere al thread. Speriamo che alcune persone saranno up-votare, dandogli una certa credibilità aggiunto. Q1: È la ESRI Linea Geometria come WKB davvero valida Sì. Il WKB dice che c'è 9 punti della linea, e quindi il parser dovrebbe leggere 9 punti. MS (giustamente) rileva più dati (costituiscono il 10 0s) e racconta la sua incasinato. I 10 0s sono 5 byte nella matrice originale. Rimuovere gli ultimi 10 0s, e la sua buona, come .. Q2: Se il WKB è davvero valido, perché è la libreria SharpMap in grado di convertire Sono 100 sicuro perché sharplib non manca: il formato detta che non vi è di 9 punti. se non siete troppo esigenti, basta smettere di leggere e tutto sembra Dandy. E. perché si effettivamente convalidare che non ci sono più byte. Così im abbastanza sicuro che SharpLib non gestisce in modo specifico. essi solo smettere di leggere dopo i 9 punti, e tutto sembra funzionare. Grazie a MS non solo per lasciare Bit amp Bytes in giro. Per quanto riguarda perché il WKB ESRI è malformato Ho un paio di ipotesi: Si assegnano x quantità di byte alla volta, e non sono precise di chiudere l'array di byte. O. essi. quando il conteggio del numero di byte, prendono la lunghezza del corpo e aggiunge la lunghezza dell'intestazione troppo (1 byte encodinginfo, 1 byte tipo geom, 8 byte di numero di punti della linea), e in qualche modo quando il conteggio del corpo, che comprende la lunghezza dell'intestazione. causando dimensione doppia intestazione. In ogni caso, questo è solo speculazioni e non sono sicuro che ciò che le informazioni sono un bene per quanto non possiamo fare nulla comunque :-) risposto 13 luglio 12 alle 15: 51When di specificare un file di forma come origine dati spaziali e si trova sul tuo computer locale, i dati spaziali sono incorporati automaticamente nel report. Per utilizzare i dati spaziali da un file ESRI in modo dinamico, è necessario effettuare le seguenti operazioni: carica sia il file. shp e il file dbf nella stessa cartella su un server di report, e quindi collegare il file shp come origine dati spaziali. Per ulteriori informazioni sull'argomento, consultare il seguente articolo, Mappe (Generatore report 3.0): msdn. microsoften-uslibraryee240845 (SQL.105) aspx Se avete qualche domanda, non esitate a farmi sapere. Contrassegnato come risposta da Eileen Zhao Domenica 17 Luglio 2011 16:38 Lunedi, 11 luglio, 2011 07:20 Tutte le risposte quando si specifica un file di forma come origine dati spaziali e si trova sul computer locale, la spaziale i dati vengono incorporati automaticamente nel report. Per utilizzare i dati spaziali da un file ESRI in modo dinamico, è necessario effettuare le seguenti operazioni: carica sia il file. shp e il file dbf nella stessa cartella su un server di report, e quindi collegare il file shp come origine dati spaziali. Per ulteriori informazioni sull'argomento, consultare il seguente articolo, Mappe (Generatore report 3.0): msdn. microsoften-uslibraryee240845 (SQL.105) aspx Se avete qualche domanda, non esitate a farmi sapere. Contrassegnato come risposta da Eileen Zhao Domenica 17 Luglio 2011 16:38 Lunedi, 11 luglio, 2011 07:20 Ho sperimentato questo errore anche quando i dati locali è incorporato nella relazione. La causa potenziale citato non può essere l'unico. Domenica 8 gennaio, 2012 18:18 Alcuni file SHP di grandi dimensioni hanno causato questo errore quando il controllo della mappa viene regolato per occupare meno spazio. Curiosamente, il problema potrebbe andare via se viene scelto un po 'diverso grado di risparmio di spazio. Sembrerebbe come l'algoritmo utilizzato per comprimere i dati della mappa può produrre dati binari non validi su alcune impostazioni ma produrre dati corretti con impostazioni leggermente diverse. Proposto come risposta da Stefan Granath Domenica 6 Dicembre 2015 04:19 Giovedi, 12 ° gennaio, 2012 15:47 Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione del sito Web MSDN. Se si sceglie di partecipare, il sondaggio on-line sarà presentato a voi quando si lascia il sito Web MSDN. Vuoi partecipare 2017 Microsoft. Tutti i diritti reserved. Im nuovo ai dati spaziali. Ive ha importato alcuni file ESRI nel mio database utilizzando l'applicazione OSGeo4W. Ora voglio distribuire queste mappe ad alcuni dei nostri server del cliente senza utilizzare l'applicazione OSGeo4W. Come ho solo 9 mappe, speravo di inserire semplicemente i dati come questo. Msg 6522, livello 16, stato 1, si è verificato l'errore Linea 2 Quadro durante l'esecuzione di routine definita dall'utente o di aggregazione quotgeometryquot: System. FormatException: 24115: Il binario (WKB) Ingresso noto non è valido. a Microsoft. SqlServer. Types. WellKnownBinaryReader. ParseWkb (tipo OpenGisType) a Microsoft. SqlServer. Types. WellKnownBinaryReader. Read (tipo OpenGisType, Int32 SRID) a Microsoft. SqlServer. Types. SqlGeometry. GeometryFromBinary (tipo OpenGisType, SqlBytes binario, Int32 srid ) Nota - ho dovuto troncare i dati binari di rimanere entro il limite di posta. provare a generare le stringhe inserire utilizzando SSMS. Ho il sospetto che la griglia o il testo di output è sempre trunctated nei risultati della query fare clic destro sul database in in Esplora oggetti in SQL Server Management Studio selezionare script tasksgenerate. selezionare oggetti di database specifici AMP SELECT vostro tavolo. Fare clic su Avanti fare clic su Avanzate e assicurarsi che il tipo di dati di script (ultima opzione sotto generale) è impostato su dati solo colpire ok, selezionare Salva uscita finestra per interrogare poi continuare a colpire successivo fino ad ottenere lo script. Ho appena provato con un poligono 30,00043 punto che ha una lunghezza di stringa WKT di 1,2 milioni di caratteri A cura di jakubk Martedì 17 settembre 2013 05:30 Contrassegnato come risposta da clay123123123 Martedì 17 settembre 2013 10:13 Martedì , 17 set 2013 05:28 Jakubk, che è il problema. Ho sceneggiato fuori secondo il vostro suggerimento e il file generato è script. sql 120MB solo il 9 dischi che ho bisogno di ripensare la mia strategia di implementazione, o trovare alcune mappe a bassa risoluzione. Le mappe che sto usando sono stati australiani 43 1 altri territori. Il file forma originale che ho importato era 30MB. Contrassegnato come risposta da clay123123123 Martedì 17 settembre 2013 10:12 Martedì 17 settembre 2013 06:39 Tutte le risposte provare a generare le stringhe inserire utilizzando SSMS. Ho il sospetto che la griglia o il testo di output è sempre trunctated nei risultati della query fare clic destro sul database in in Esplora oggetti in SQL Server Management Studio selezionare script tasksgenerate. selezionare oggetti di database specifici AMP SELECT vostro tavolo. Fare clic su Avanti fare clic su Avanzate e assicurarsi che il tipo di dati di script (ultima opzione sotto generale) è impostato su dati solo colpire ok, selezionare Salva uscita finestra per interrogare poi continuare a colpire successivo fino ad ottenere lo script. Ho appena provato con un poligono 30,00043 punto che ha una lunghezza di stringa WKT di 1,2 milioni di caratteri A cura di jakubk Martedì 17 settembre 2013 05:30 Contrassegnato come risposta da clay123123123 Martedì 17 settembre 2013 10:13 Martedì , 17 set 2013 05:28 Jakubk, che è il problema. Ho sceneggiato fuori secondo il vostro suggerimento e il file generato è script. sql 120MB solo il 9 dischi che ho bisogno di ripensare la mia strategia di implementazione, o trovare alcune mappe a bassa risoluzione. Le mappe che sto usando sono stati australiani 43 1 altri territori. Il file forma originale che ho importato era 30MB. Contrassegnato come risposta da clay123123123 Martedì 17 settembre 2013 10:12 Martedì 17 settembre 2013 06:39 Grazie per la risposta Olaf - Ho recuperato i dati binari copiando dalla rete i risultati delle query in SQL Server Management Studio. Non mi rendevo conto di come enorme mie colonne della geometria sono. Martedì, 17 Settembre 2013 06:42 AM dovrebbe comprimere ok, così la distribuzione potrebbe essere assemblato come un file zip. O se il suo tipo setup. exe Deploy, poi lo hanno decomprimere automaticamente il sql in una directory temp, eseguirlo, quindi eliminare il file temporaneo. L'altra opzione sarebbe quella di eseguire. Reduce () sopra i poligoni primo a ridurre il numero di punti, ma non penso riducendo la risoluzione vale la pena risparmiare qualche meg .. Martedì, 17 Settembre 2013 07:21 Ho finito utilizzando. Reduce () - questo deve essere distribuito come parte del nostro processo di aggiornamento standard che comprende un lotto per l'esecuzione in SSMS (query 120MB schiantato SSMS un paio di volte sulla mia macchina). In ogni caso, le mappe hanno ancora un sacco di risoluzione per i miei scopi. Grazie. Martedì, 17 Settembre 2013 10:12 Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione del sito Web MSDN. Se si sceglie di partecipare, il sondaggio on-line sarà presentato a voi quando si lascia il sito Web MSDN. Vuoi partecipare Aiutaci a migliorare MSDN. Visita la nostra pagina UserVoice a presentare e votare le idee Dev centri risorse di apprendimento

No comments:

Post a Comment