24115 the well known binário opções no Brasil
Eu tenho importado um arquivo csv contendo informações de área espacial em varchar, em seguida, convertidos valores varchar (max) para varbinary (max), adicionando 0x aos valores varchar (max) antes da conversão. Até então, além do 0x no início, os dados em varbinary (max) coluna olha exatamente o mesmo que o varchar (max) um em convertido em texto. Agora eu executo o seguinte script: onde WKB é a coluna varbinary (max). Executando o script acima lança este erro: A entrada binária bem conhecida (WKB) não é válida A fonte de dados é de Open Street Map, sem dúvida, eles são dados de área correta. Então eu suponho que deve haver algo errado no que estou fazendo ou estou faltando algum ponto para converter WKB para tipo de dados de geometria. Alguém poderia ajudar por favor Suponho que o problema é quando a conversão de dados varchar para varbinary você está convertendo a representação de caracteres reais dos dados binários, em vez de apenas mudar o tipo de binário. Por exemplo, se você tem os dados 0xDEADBEEF em sua coluna varchar, então convert (varbinary (max), DEADBEEF) converterá as representações de caracteres ascii em binário. O que você quer fazer em vez disso é converter a seqüência hexadecimal em binário, o que é possível usando o parâmetro de estilo de converter. SELECT converter (varbinary (max), DEADBEEF, 2) deve fazer o que você deseja converter seus dados wkb varchar em binário real. Meu colega de trabalho percebeu que a linha ESRI WKB é malformado contém dados de rascunho não especificados e desde hes não ativo no GIS. SE, coloquei suas observações como resposta. Vou esperar alguns dias para críticas antes de aceitá-lo no caso de alguém tem uma reação mais definitiva. Enquanto isso, eu posso recriar a exceção entre ESRI Geometria de Linha WKB e SqlServer. Types fazendo uma nova classe de recurso, dando-lhe uma geometria de linha única, e bingo --- sua repetida. Toda vez. Mas eu googled este dia inteiro ontem e didnt encontrar qualquer confirmação deste. Eu devo ser um Googler ruim Quando eu tento converter um esriPolylineGeometry para IWkb, então percorrer os movimentos de exportar para wkbBytes e consumi-lo em SqlServer. Types. SqlGeometry. STGeomFromWKB () a conversão sempre falha com o erro bem conhecido binário (WKB ) Não é válida. No entanto, se eu usar a mesma abordagem para obter wkbBytes, ele funciona bem quando eu enviá-lo através de conversores SharpMap. Ive feito tudo o que eu posso imaginar para descartar geometrias pobres, e Im pensando certamente alguém tem funcionado nisto antes. No ESRI-lado, eu tentei usar ITopologyOperator executar. Simplify () e. Buffer (0). E nem faz a diferença. Eu também tentei adicionar. MakeValid () atrás de STGeomFromWKB () para não usar. E também não há diferença entre IWkb. ExportToWkb () ou o IGeometryFactory. CreateWkbVariantFromGeometry () alternativo. Então a minha pergunta é: O WKB é realmente inválido? Se assim for, então por que ele está convertendo corretamente no SharpMap O WKB saindo do ESRI se parece com isto: Abaixo, o primeiro bloco de código mostra a abordagem falha quando eu tento consumir usando SqlGeometrys static method STGeomFromWKB (). O segundo bloco mostra a abordagem SharpMap, que funciona ao consumir os mesmos dados wkbBytes. Esta abordagem usando SqlServer. Types falha .. Mas esta abordagem usando conversores SharpMap funciona. Ambas as abordagens aceitam geometrias Polygon, mas Im esperando alguém sabe como obter a abordagem SqlServer. Types para trabalhar em geometrias Line, como temos outros projetos já usando essa biblioteca. Eu não vou hesitar em usar conversores SharpMap se essa é a resposta, mas me incomoda que uma condição desconhecida está causando SqlServer. Types para falhar no contexto de geometrias de linha. Perguntou Jul 12 12 at 22:09 Sem ofensa, mas, na verdade, as conclusões do seu colega de trabalho sobre como algo que ele acha que deve funcionar não faz com que seja a maneira oficial que deve funcionar. Para isso, nos referimos às especificações do OGC. Se você consultar as páginas 66-70, você encontrará a especificação para o documento mais antigo, ou páginas 65-72 para a especificação mais recente. Para resumir, não há nenhuma parte que proíbe o wkb de ter dados à direita. Na verdade, a especificação inclui contadores para cada elemento único para que você saiba exatamente o quanto do blob binário você deve ser analisar. Ele vai até mesmo incluindo um byte para ordenação de bytes para que você possa alternar entre endianness da representação binária de cada elemento de geometria interna como você analisá-lo Meu ponto é que você sempre sabe exatamente o quanto você deve estar lendo e como você deve ser Interpretando-o. A Microsoft escolheu, em seu analisador, continuar consumindo o conteúdo binário mesmo que nada na especificação OGC diga que deveria. Então eles escolheram considerar essa condição inválida. Eles estão errados Bem, é assim que eles interpretaram, mesmo que o próprio blob binário satisfaça as especificações. Dizer que o WKB fornecido pela ESRI é inválido, para este caso específico, está incorreto. By the way, todos os outros analisadores WKB lá fora (GEOS, PostGIS, GDALs, ESRIs, SharpMaps, Autodesks, etc) aceita esta condição como OK. Aqui está o seu exemplo usando PostGIS: Agora eu vou adicionar quaisquer dados binários aleatórios no final da sua geometria: O bug está realmente no analisador da Microsoft. No espírito de um bom debate, porém, você tem que admitir que esses são inúmeros 039s no final do ESRI WKB fluxo. Se eu usar a mesma abordagem para converter a geometria do polígono ESRI, ele retorna um fluxo limpo (pelo menos, nos olhos do analisador MS). Mas eu concordo plenamente que é válido onde ele conta. Na tentativa de alcançar a melhor paz, eu apresento que ESRI tem um fluxo sujo, mas MS tem um parser tirânico. É sempre interessante quando dois aviões de força se juntam no centro do gelo. Heh ndash elrobis Jul 14 12 às 22:39 Você tem razão sobre esses bytes sendo bastante inútil. Não tenho certeza de onde eles estão vindo (algum detalhe de implementação interna provavelmente). Se você quiser nitpick, eu realmente diria que cada único byte usado para descrever endianness em cada elemento de geometria única é muito burro, também. Eu posso ver como um blob binário pode vir de sistemas diferentes e assim serializar de forma diferente. Mas acho que adicioná-lo a cada elemento é o desperdício. Posso ver como você teria um no início embora. Eu entendo por que ele está lá, mas isso seria um tópico para uma discussão diferente completamente. Ndash Ragi Yaser Burhum Jul 14 12 at 23:59 Basicamente o meu colega de trabalho respondeu às minhas principais perguntas, por isso Im perfurando-los aqui por uma questão de responder a discussão. Esperançosamente alguns povos up-vote-o, dando lhe alguma credibilidade adicionada. Q1: A Geometria de Linha ESRI como WKB é realmente inválida Sim. O wkb diz que há 9 pontos na linha e, em seguida, o analisador deve ler 9 pontos. MS (com razão) detecta mais dados (sendo os 10 0s) e diz a sua confuso. Os 10 0s são 5 bytes na matriz original. Q2: Se o WKB é realmente inválido, por que é a biblioteca SharpMap capaz de convertê-lo Estou certo de 100 por que sharplib não falha: o formato dita que há 9 pontos. Se você não exigente, a apenas parada leitura e tudo parece dandy. E. Por que você realmente validar que não há mais bytes. Então, eu tenho certeza que SharpLib não lidar com isso especificamente. Eles simplesmente parar de ler após os 9 pontos, e tudo parece funcionar. Graças a MS para não apenas deixar Bits amp Bytes pendurado ao redor. Quanto a PORQUE o ESRI WKB é malformado eu tenho algumas suposições: Eles alocam x quantidade de bytes de cada vez, e não são precisos sobre o fechamento da matriz de bytes. OU. eles. Ao contar o número de bytes, eles tomam o comprimento do corpo e adiciona o comprimento do cabeçalho também (1 byte encodinginfo, 1 byte geom tipo, 8 bytes de número de pontos na linha), e de alguma forma ao contar o corpo, eles incluem o comprimento Do cabeçalho. Causando tamanho de cabeçalho duplo. De qualquer forma, isso é apenas especulações e não tenho certeza que a informação é boa, pois não podemos fazer nada sobre isso de qualquer maneira :-) respondeu 13 de julho às 15: 51Quando você especifica um arquivo de forma como uma fonte de dados espaciais e está localizado no seu Computador local, os dados espaciais são incorporados automaticamente no relatório. Para usar dados espaciais de um arquivo ESRI dinamicamente, você deve fazer o seguinte: Carregar o arquivo. shp eo arquivo. dbf para a mesma pasta em um servidor de relatório e, em seguida, vincular ao arquivo. shp como a fonte de dados espaciais. Para obter mais informações sobre o tópico, consulte o seguinte artigo, Mapas (Construtor de Relatórios 3.0 e SSRS): msdn. microsoften-uslibraryee240845 (SQL.105).aspx Se você tiver qualquer pergunta, sinta-se livre para me informar. Marcado como resposta por Eileen Zhao Todas as respostas Quando você especifica um arquivo de forma como uma fonte de dados espaciais e está localizado no seu computador local, o espaço Os dados são automaticamente incorporados no relatório. Para usar dados espaciais de um arquivo ESRI dinamicamente, você deve fazer o seguinte: Carregar o arquivo. shp eo arquivo. dbf para a mesma pasta em um servidor de relatório e, em seguida, vincular ao arquivo. shp como a fonte de dados espaciais. Para obter mais informações sobre o tópico, consulte o seguinte artigo, Mapas (Construtor de Relatórios 3.0 e SSRS): msdn. microsoften-uslibraryee240845 (SQL.105).aspx Se você tiver qualquer pergunta, sinta-se livre para me informar. Marcado como resposta por Eileen Zhao Domingo, 17 de julho de 2017 16:38 Segunda-feira, 11 de julho de 2017 7:20 Eu experimentei este erro mesmo quando dados locais estão incorporados no relatório. A causa potencial citada não pode ser a única. Domingo, 8 de janeiro de 2017 18:18 Alguns arquivos shp grandes causaram esse erro quando o controle de mapa é ajustado para ocupar menos espaço. Curiosamente, o problema pode desaparecer se um grau ligeiramente diferente de economia de espaço é escolhido. Parece que o algoritmo utilizado para comprimir os dados do mapa pode gerar dados binários inválidos em algumas configurações, mas produzir dados corretos com configurações ligeiramente diferentes. Proposta como resposta por Stefan Granath A Microsoft está conduzindo uma pesquisa on-line para entender sua opinião sobre o site da Msdn. Se você optar por participar, a pesquisa on-line será apresentada a você quando você deixar o site Msdn. Gostaria de participar 2017 Microsoft. Todos os direitos reservados.
Comments
Post a Comment