24115 The Well Known Binario Opcoes




Eu tenho importado um arquivo csv contendo informacoes de area espacial em varchar, em seguida, convertidos valores varchar (max) para varbinary (max), adicionando 0x aos valores varchar (max) antes da conversao. Ate entao, alem do 0x no inicio, 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 e a coluna varbinary (max). Executando o script acima lanca este erro: A entrada binaria bem conhecida (WKB) nao e valida A fonte de dados e de Open Street Map, sem duvida, eles sao dados de area correta. Entao 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. Alguem poderia ajudar por favor Suponho que o problema e quando a conversao de dados varchar para varbinary voce esta convertendo a representacao de caracteres reais dos dados binarios, em vez de apenas mudar o tipo de binario. Por exemplo, se voce tem os dados 0xDEADBEEF em sua coluna varchar, entao convert (varbinary (max), DEADBEEF) convertera as representacoes de caracteres ascii em binario. O que voce quer fazer em vez disso e converter a sequencia hexadecimal em binario, o que e possivel usando o parametro de estilo de converter. SELECT converter (varbinary (max), DEADBEEF, 2) deve fazer o que voce deseja converter seus dados wkb varchar em binario real. Meu colega de trabalho percebeu que a linha ESRI WKB e malformado contem dados de rascunho nao especificados e desde hes nao ativo no GIS. SE, coloquei suas observacoes como resposta. Vou esperar alguns dias para criticas antes de aceita-lo no caso de alguem tem uma reacao mais definitiva. Enquanto isso, eu posso recriar a excecao entre ESRI Geometria de Linha WKB e SqlServer. Types fazendo uma nova classe de recurso, dando-lhe uma geometria de linha unica, e bingo --- sua repetida. Toda vez. Mas eu googled este dia inteiro ontem e didnt encontrar qualquer confirmacao deste. Eu devo ser um Googler ruim Quando eu tento converter um esriPolylineGeometry para IWkb, entao percorrer os movimentos de exportar para wkbBytes e consumi-lo em SqlServer. Types. SqlGeometry. STGeomFromWKB () a conversao sempre falha com o erro bem conhecido binario (WKB ) Nao e valida. No entanto, se eu usar a mesma abordagem para obter wkbBytes, ele funciona bem quando eu envia-lo atraves de conversores SharpMap. Ive feito tudo o que eu posso imaginar para descartar geometrias pobres, e Im pensando certamente alguem tem funcionado nisto antes. No ESRI-lado, eu tentei usar ITopologyOperator executar. Simplify () e. Buffer (0). E nem faz a diferenca. Eu tambem tentei adicionar. MakeValid () atras de STGeomFromWKB () para nao usar. E tambem nao ha diferenca entre IWkb. ExportToWkb () ou o IGeometryFactory. CreateWkbVariantFromGeometry () alternativo. Entao a minha pergunta e: O WKB e realmente invalido? Se assim for, entao por que ele esta convertendo corretamente no SharpMap O WKB saindo do ESRI se parece com isto: Abaixo, o primeiro bloco de codigo 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 alguem sabe como obter a abordagem SqlServer. Types para trabalhar em geometrias Line, como temos outros projetos ja usando essa biblioteca. Eu nao vou hesitar em usar conversores SharpMap se essa e a resposta, mas me incomoda que uma condicao desconhecida esta causando SqlServer. Types para falhar no contexto de geometrias de linha. Perguntou Jul 12 12 at 22:09 Sem ofensa, mas, na verdade, as conclusoes do seu colega de trabalho sobre como algo que ele acha que deve funcionar nao faz com que seja a maneira oficial que deve funcionar. Para isso, nos referimos as especificacoes do OGC. Se voce consultar as paginas 66-70, voce encontrara a especificacao para o documento mais antigo, ou paginas 65-72 para a especificacao mais recente. Para resumir, nao ha nenhuma parte que proibe o wkb de ter dados a direita. Na verdade, a especificacao inclui contadores para cada elemento unico para que voce saiba exatamente o quanto do blob binario voce deve ser analisar. Ele vai ate mesmo incluindo um byte para ordenacao de bytes para que voce possa alternar entre endianness da representacao binaria de cada elemento de geometria interna como voce analisa-lo Meu ponto e que voce sempre sabe exatamente o quanto voce deve estar lendo e como voce deve ser Interpretando-o. A Microsoft escolheu, em seu analisador, continuar consumindo o conteudo binario mesmo que nada na especificacao OGC diga que deveria. Entao eles escolheram considerar essa condicao invalida. Eles estao errados Bem, e assim que eles interpretaram, mesmo que o proprio blob binario satisfaca as especificacoes. Dizer que o WKB fornecido pela ESRI e invalido, para este caso especifico, esta incorreto. By the way, todos os outros analisadores WKB la fora (GEOS, PostGIS, GDALs, ESRIs, SharpMaps, Autodesks, etc) aceita esta condicao como OK. Aqui esta o seu exemplo usando PostGIS: Agora eu vou adicionar quaisquer dados binarios aleatorios no final da sua geometria: O bug esta realmente no analisador da Microsoft. No espirito de um bom debate, porem, voce tem que admitir que esses sao inumeros 039s no final do ESRI WKB fluxo. Se eu usar a mesma abordagem para converter a geometria do poligono ESRI, ele retorna um fluxo limpo (pelo menos, nos olhos do analisador MS). Mas eu concordo plenamente que e valido onde ele conta. Na tentativa de alcancar a melhor paz, eu apresento que ESRI tem um fluxo sujo, mas MS tem um parser tiranico. E sempre interessante quando dois avioes de forca se juntam no centro do gelo. Heh ndash elrobis Jul 14 12 as 22:39 Voce tem razao sobre esses bytes sendo bastante inutil. Nao tenho certeza de onde eles estao vindo (algum detalhe de implementacao interna provavelmente). Se voce quiser nitpick, eu realmente diria que cada unico byte usado para descrever endianness em cada elemento de geometria unica e muito burro, tambem. Eu posso ver como um blob binario pode vir de sistemas diferentes e assim serializar de forma diferente. Mas acho que adiciona-lo a cada elemento e o desperdicio. Posso ver como voce teria um no inicio embora. Eu entendo por que ele esta la, mas isso seria um topico para uma discussao diferente completamente. Ndash Ragi Yaser Burhum Jul 14 12 at 23:59 Basicamente o meu colega de trabalho respondeu as minhas principais perguntas, por isso Im perfurando-los aqui por uma questao de responder a discussao. Esperancosamente alguns povos up-vote-o, dando lhe alguma credibilidade adicionada. Q1: A Geometria de Linha ESRI como WKB e realmente invalida Sim. O wkb diz que ha 9 pontos na linha e, em seguida, o analisador deve ler 9 pontos. MS (com razao) detecta mais dados (sendo os 10 0s) e diz a sua confuso. Os 10 0s sao 5 bytes na matriz original. Q2: Se o WKB e realmente invalido, por que e a biblioteca SharpMap capaz de converte-lo Estou certo de 100 por que sharplib nao falha: o formato dita que ha 9 pontos. Se voce nao exigente, a apenas parada leitura e tudo parece dandy. E. Por que voce realmente validar que nao ha mais bytes. Entao, eu tenho certeza que SharpLib nao lidar com isso especificamente. Eles simplesmente parar de ler apos os 9 pontos, e tudo parece funcionar. Gracas a MS para nao apenas deixar Bits amp Bytes pendurado ao redor. Quanto a PORQUE o ESRI WKB e malformado eu tenho algumas suposicoes: Eles alocam x quantidade de bytes de cada vez, e nao sao precisos sobre o fechamento da matriz de bytes. OU. eles. Ao contar o numero de bytes, eles tomam o comprimento do corpo e adiciona o comprimento do cabecalho tambem (1 byte encodinginfo, 1 byte geom tipo, 8 bytes de numero de pontos na linha), e de alguma forma ao contar o corpo, eles incluem o comprimento Do cabecalho. Causando tamanho de cabecalho duplo. De qualquer forma, isso e apenas especulacoes e nao tenho certeza que a informacao e boa, pois nao podemos fazer nada sobre isso de qualquer maneira :-) respondeu 13 de julho as 15: 51Quando voce especifica um arquivo de forma como uma fonte de dados espaciais e esta localizado no seu Computador local, os dados espaciais sao incorporados automaticamente no relatorio. Para usar dados espaciais de um arquivo ESRI dinamicamente, voce deve fazer o seguinte: Carregar o arquivo. shp eo arquivo. dbf para a mesma pasta em um servidor de relatorio e, em seguida, vincular ao arquivo. shp como a fonte de dados espaciais. Para obter mais informacoes sobre o topico, consulte o seguinte artigo, Mapas (Construtor de Relatorios 3.0 e SSRS): msdn. microsoften-uslibraryee240845 (SQL.105).aspx Se voce tiver qualquer pergunta, sinta-se livre para me informar. Marcado como resposta por Eileen Zhao Todas as respostas Quando voce especifica um arquivo de forma como uma fonte de dados espaciais e esta localizado no seu computador local, o espaco Os dados sao automaticamente incorporados no relatorio. Para usar dados espaciais de um arquivo ESRI dinamicamente, voce deve fazer o seguinte: Carregar o arquivo. shp eo arquivo. dbf para a mesma pasta em um servidor de relatorio e, em seguida, vincular ao arquivo. shp como a fonte de dados espaciais. Para obter mais informacoes sobre o topico, consulte o seguinte artigo, Mapas (Construtor de Relatorios 3.0 e SSRS): msdn. microsoften-uslibraryee240845 (SQL.105).aspx Se voce tiver qualquer pergunta, sinta-se livre para me informar. Marcado como resposta por Eileen Zhao Domingo, 17 de julho de 2011 16:38 Segunda-feira, 11 de julho de 2011 7:20 Eu experimentei este erro mesmo quando dados locais estao incorporados no relatorio. A causa potencial citada nao pode ser a unica. Domingo, 8 de janeiro de 2012 18:18 Alguns arquivos shp grandes causaram esse erro quando o controle de mapa e ajustado para ocupar menos espaco. Curiosamente, o problema pode desaparecer se um grau ligeiramente diferente de economia de espaco e escolhido. Parece que o algoritmo utilizado para comprimir os dados do mapa pode gerar dados binarios invalidos em algumas configuracoes, mas produzir dados corretos com configuracoes ligeiramente diferentes. Proposta como resposta por Stefan Granath A Microsoft esta conduzindo uma pesquisa on-line para entender sua opiniao sobre o site da Msdn. Se voce optar por participar, a pesquisa on-line sera apresentada a voce quando voce deixar o site Msdn. Gostaria de participar 2017 Microsoft. Todos os direitos reservados.