OpenCADIrrigation Abrir o app

Formatos de arquivo

Projeto (.oci.json)

JSON legível com estas chaves de primeiro nível:

Chave Conteúdo
format, version "opencadirrigation", 2 (arquivos da versão 1 são atualizados na leitura; o nome antigo irrigationcad ainda é aceito)
meta uid estável, datas de criação e modificação, nome, cliente, obra, projetista, notas, georreferência (fuso UTM, hemisfério, origem E/N, e o datum quando escolhido), o carimbo profissional (titleBlock, só quando há algo nele; o logotipo vai no arquivo, não nos links de compartilhamento)
params Todos os parâmetros de projeto e as unidades
catalog O catálogo do projeto completo (o arquivo é autossuficiente)
layers Nome, cor ARGB, visível, bloqueada
entities Uma entrada por entidade, com type, id, layer, name e os campos próprios (pontos em metros; um pivô guarda os dados da máquina em mach)
systemFlows Turnos: nome, válvulas (e pivôs e estações de aspersores com válvula), hora de início, duração
proposal, scenarios, climate, labelRules, blocks, aiNotes Opcionais: configurações do orçamento, alternativas do projeto, clima do local (com a série diária de um arquivo de estação ou de um download), rótulos condicionais, blocos do usuário, as notas do assistente de IA sobre o projeto
agronomy, agb, deliverables, dimStyle, layerStates Opcionais, gravados só quando diferem de um projeto novo: o plano agronômico (culturas do usuário, programa, balanço hídrico, fertirrigação por estágio, avaliações de campo), as configurações de energia, água e máquinas, as dos documentos técnicos, o estilo de cota e os estados de camadas com nome
unreadable Itens que esta versão não conseguiu ler (danificados, ou de uma versão mais nova), guardados e gravados de volta para que uma versão posterior os recupere
nextId, currentLayer Contador de ids e camada corrente
results Opcional: resultados do último cálculo, para reabrir com relatórios sem recalcular

O mesmo JSON é usado pelo autosave, pelas versões, pela área de transferência entre projetos, pelos links de compartilhamento e pelo worker de cálculo. O arquivo abre item a item: um item que não pode ser lido fica de lado (em unreadable), vértices sem coordenadas são descartados, uma cota desconhecida nunca vira 0 m, ids repetidos ou ausentes são renumerados, opções desconhecidas caem no padrão e campos de uma versão mais nova são preservados; o app então diz o que reparou. oci schema imprime o JSON Schema do arquivo, gerado do modelo. Arquivo → Inserir projeto… mescla outro arquivo de projeto no aberto, com ids novos (as referências entre os itens mantidas), os itens de catálogo que ele usa (renomeados quando o projeto aberto tem outro item com o mesmo id, com preços na moeda dele), as camadas que faltam, os turnos que rodam os itens dele e os seus blocos; com as duas georreferências os itens caem no mesmo lugar do terreno, um projeto vazio sem georreferência adota a do arquivo, senão eles entram como desenhados. A biblioteca de blocos é exportada num arquivo .oci-blocks.json.

Importação

Formato O que entra Detalhes
DXF (ASCII) LINE, LWPOLYLINE e POLYLINE (com arcos de bulge), CIRCLE, ARC, ELLIPSE, SPLINE (pelos pontos de ajuste, ou a curva NURBS dos pontos de controle, nós e pesos), HATCH (contornos de polilinhas, linhas, arcos, elipses e splines; ângulo e espaçamento do padrão; ilhas como polilinhas), SOLID, TRACE, TEXT, MTEXT (com os seus parágrafos), ATTRIB, LEADER (a sua linha), MULTILEADER, MLINE, POINT, 3DFACE e malhas, camadas e blocos (INSERT, MINSERT e o bloco das cotas DIMENSION, inclusive aninhados) R12 a 2018, lido grupo a grupo em fatias com progresso e Cancelar; a página de código do $DWGCODEPAGE (tabelas de byte simples e as páginas japonesa, chinesas e coreana 932, 936, 949 e 950), Latin-1 ou UTF-8; caracteres \U+XXXX, símbolos %%c/%%d/%%p e códigos de MTEXT decodificados; polilinhas com elevação (2D ou vértices 3D) viram curvas de nível e camadas de linhas de quebra, linhas de quebra; pontos com Z, faces 3D, malhas e blocos de levantamento (um INSERT cujo ATTRIB traz a cota, com vírgula decimal ou unidade, ou a cota da inserção) viram cotas; o XDATA hidráulico de um desenho exportado por este app traz de volta os seus tubos e itens como rede; escala pelas unidades do arquivo; camadas desligadas ou congeladas entram ocultas; o espaço papel fica de fora, e os tipos de entidade sem suporte são citados no aviso; a expansão de blocos tem teto contra ciclos e blocos explosivos, e uma referência externa ausente é avisada
DWG Mesmas entidades (inclusive ELLIPSE, SPLINE, HATCH, SOLID, TRACE, LEADER, ATTRIB, 3DFACE e MLINE; polilinhas 2D com seus arcos), camadas com as suas cores, blocos (INSERT, MINSERT), cotas e o XDATA hidráulico; como no DXF, entidades espelhadas no programa de CAD (extrusão 0, 0, −1) ficam onde o CAD as mostra R13/R14 (parcial), 2000, 2004, 2007, 2010, 2013 e 2018, em Dart puro, lido em fatias com progresso e Cancelar; unidades pelo $INSUNITS, a página de código do cabeçalho (CJK inclusive); mapas de handles lidos seja qual for a forma como o programa os codificou; objetos ignorados avisados, as classes deixadas de fora (MULTILEADER, IMAGE, WIPEOUT…) citadas
DGN V7 Linhas, line strings, shapes, curvas, cadeias e shapes complexos, círculos, elipses, arcos, textos, células; níveis como camadas (LEVEL_<n>); arquivos 2D e 3D (um Z constante vira a elevação) Unidades pela razão unidade mestra/subunidade e pela origem global do arquivo; DGN V8 é recusado pelo nome
PDF (planta) Uma página como base de fundo: linhas, polilinhas e contornos, textos com altura e ângulo, imagens, camadas do PDF (as desligadas por padrão só se pedidas), uma camada por importação e opcionalmente uma por cor Arquivo → Importar abre um diálogo: página com prévia, escala 1:N (lida da folha quando escrita nela, ou escolhida, ou metros por unidade do PDF), ponto de inserção, conteúdo; depois Alinhar por 2 pontos. Arquivos criptografados são recusados; imagens JPEG 2000 e JBIG2 ficam de fora; áreas preenchidas entram como contornos
KML / KMZ Placemarks, pastas como camadas, trilhas de GPS (gx:Track), altitude ou atributo ELEV como elevação; as sobreposições de imagem de um KMZ (GroundOverlay com LatLonBox e rotação, ou um gx:LatLonQuad retangular) como fundo georreferenciado, com a transparência da cor e a ordem de desenho WGS84 → UTM (fuso automático) com origem local; georreferencia o projeto; uma sobreposição cuja imagem vem da internet ou não pode ser lida é citada no aviso
SHP (+ DBF, PRJ, CPG em zip) Pontos, linhas, polígonos, multipontos, variantes Z; um zip com vários shapefiles traz cada um na camada do seu nome Lido registro a registro com progresso e Cancelar; elevação do Z ou de atributo ELEV/Z/COTA; nome de NAME/NOME/ID; atributos na página de código do .cpg (UTF-8, Latin-1, as páginas do Windows e as CJK); o .prj posiciona os dados (abaixo); sem ele, graus são reconhecidos pela faixa e pela precisão
GeoJSON FeatureCollection, Feature, GeometryCollection ou uma geometria solta, todos os tipos de geometria; nome, elevação e camada pelas propriedades Longitude/latitude RFC 7946 em WGS 84, ou o membro crs da especificação de 2008 (UTM em SIRGAS 2000, SAD 69 ou Córrego Alegre cai no lugar); pontos sem altura viram marcadores
GPX Waypoints (com elevação: cotas), rotas e trilhas GPX 1.1 e 1.0
LandXML CgPoints, superfícies (o TIN, ou curvas, linhas de quebra, pontos e contornos) e redes de tubos Rarefeito até o limite do terreno; sistema de coordenadas do arquivo; unidades imperiais convertidas
LAS Os pontos de terreno (classe 2) de uma nuvem de pontos como terreno, rarefeitos numa grade durante a leitura LAS 1.0–1.4, formatos de ponto 0–10, sistema de coordenadas pelas chaves GeoTIFF ou pelo WKT; LAZ comprimido é recusado
EPANET (.inp) A rede desenhada: tubos, bombas e válvulas como polilinhas nas camadas EPANET_*, nós com seus ids Unidades US convertidas; posicionada pela georreferência ou em metros locais; o leitor do motor também monta a rede hidráulica (docs/API.pt-BR.md)
CSV, TXT, XYZ, PTS, PNEZD Pontos de levantamento Arquivo → Importar abre o assistente de pontos: as primeiras linhas numa tabela, o papel de cada coluna (ponto, este, norte, cota, latitude, longitude, descrição, ignorar), o separador, o separador decimal, um cabeçalho, linhas a pular, a codificação e o sistema de coordenadas (metros locais, a UTM do projeto, latitude e longitude, a UTM de um fuso num datum, um código EPSG), com um mapa do mundo que mostra onde os pontos caem (e, num anel, onde cairiam com latitude e longitude trocadas) e um aviso quando caem longe do projeto; colunas detectadas pelo cabeçalho ou posição, PENZ ou PNEZ pela grandeza dos valores UTM, vírgula decimal e separador de milhar aceitos; pontos sem cota viram marcadores
GeoTIFF de elevação Grade de cotas Uma banda de alturas, float ou inteiro, nodata ignorado; TIFF clássico, BigTIFF e GeoTIFF otimizado para a nuvem lidos por blocos (sem compressão, LZW, Deflate, PackBits, JPEG; preditores 2 e 3; os blocos vazios de arquivos esparsos) e amostrados na grade do modelo sem decodificar o resto
JPG, PNG, GeoTIFF, zip com world file Imagem de fundo Georreferenciada (world file, inclusive rotacionado; tags GeoTIFF, com uma projeção dada chave por chave) ou colocada à mão e alinhada por 2 pontos; rasters TIFF grandes (ortomosaicos de drone de centenas de megapixels, BigTIFF, GeoTIFF otimizado para a nuvem com as suas visões reduzidas, até 4 bilhões de pixels) são reduzidos por média durante a leitura, só com as linhas em andamento na memória; JPG, PNG e outras imagens com mais de 100 milhões de pixels são recusadas antes de decodificar

Sistemas de coordenadas. Os leitores que trazem um sistema de coordenadas (.prj do shapefile, crs do GeoJSON, LandXML, LAS, GeoTIFF) reconhecem WKT 1 (nas variantes ESRI e OGC), WKT 2, códigos EPSG e URNs da OGC, com a transversa de Mercator (UTM) e as projeções cônica equivalente de Albers, cônica conforme de Lambert e policônica (Snyder 1987), inclusive as grades nacionais dos EPSG 5880 e 29101 (Policônica do Brasil), 10857 (Albers do Brasil), 2154 (Lambert-93), 3034 (LCC Europa), 5070 (Albers dos EUA contíguos) e 6372 (LCC do México); o RGF93 é lido como ETRS89. Dados em SAD 69 e Córrego Alegre são deslocados para o SIRGAS 2000 com as translações de três parâmetros do IBGE (precisão de alguns metros); SIRGAS 2000, WGS 84, ETRS89 e NAD83 são tratados como idênticos na precisão de um mapa de projeto. Um sistema não reconhecido é informado, não adivinhado. Um desenho em UTM do fuso do projeto entra deslocado pela origem da georreferência, no lugar sobre o mapa de satélite.

Arquivos grandes são lidos em fatias antes de a importação mudar o projeto, com progresso e Cancelar (Importação cancelada: o projeto não mudou): DXF, DWG e LAS pelos seus próprios leitores, GeoTIFF bloco a bloco, shapefiles registro a registro e KML/KMZ entre pausas; arquivos pequenos dispensam o diálogo. Arquivos compactados (KMZ, XLSX, shapefiles e imagens em zip, links de compartilhamento) são abertos entrada por entrada, até um teto cada, contra bombas de zip. Um link de compartilhamento de um projeto grande pergunta antes de abrir.

Catálogos e exemplos

Pacotes .oci.cat em catalogs/ (formato em catalogs/README.md) e projetos de exemplo em examples/, regenerados por ferramentas e guardados por testes.