211 |
211 |
LineString3D lineString3D = (LineString3D)feaBordes.getGeometry();
|
212 |
212 |
Polygon3D polygon3D = (Polygon3D)feaFondos.getGeometry();
|
213 |
213 |
lineString3D.add(firstPt);
|
214 |
|
if (bulge!=0) {
|
215 |
|
|
|
214 |
if (bulge!=0 && !(lineString3D.get(lineString3D.pointNr()-2).getX()==lineString3D.get(lineString3D.pointNr()-1).getX()) && lineString3D.get(lineString3D.pointNr()-2).getY()==lineString3D.get(lineString3D.pointNr()-1).getY()) {
|
216 |
215 |
// 041122: Correcci?n del bug en los bulges de FIXT3.DXF
|
217 |
216 |
Vector arc = createArc(new Point2D.Double(lineString3D.get(lineString3D.pointNr()-2).getX(), lineString3D.get(lineString3D.pointNr()-2).getY()), new Point2D.Double(lineString3D.get(lineString3D.pointNr()-1).getX(), lineString3D.get(lineString3D.pointNr()-1).getY()), bulge);
|
218 |
217 |
lineString3D.remove(lineString3D.pointNr()-1);
|
... | ... | |
241 |
240 |
}
|
242 |
241 |
}
|
243 |
242 |
// 041122
|
244 |
|
|
245 |
243 |
bulge = 0.0;
|
246 |
244 |
}
|
247 |
245 |
|
... | ... | |
328 |
326 |
if (lastFeaBordes.getGeometry() instanceof LineString3D) {
|
329 |
327 |
Feature feaBordes = lastFeaBordes;
|
330 |
328 |
LineString3D lineString3D = (LineString3D)feaBordes.getGeometry();
|
331 |
|
if (bulge!=0) {
|
332 |
|
|
|
329 |
if (bulge!=0 && !(lineString3D.get(lineString3D.pointNr()-2).getX()==lineString3D.get(lineString3D.pointNr()-1).getX()) && lineString3D.get(lineString3D.pointNr()-2).getY()==lineString3D.get(lineString3D.pointNr()-1).getY()) {
|
333 |
330 |
// 041122: Correcci?n del bug en los bulges de FIXT3.DXF
|
334 |
331 |
Vector arc = createArc(new Point2D.Double(lineString3D.get(lineString3D.pointNr()-2).getX(), lineString3D.get(lineString3D.pointNr()-2).getY()), new Point2D.Double(lineString3D.get(lineString3D.pointNr()-1).getX(), lineString3D.get(lineString3D.pointNr()-1).getY()), bulge);
|
335 |
332 |
lineString3D.remove(lineString3D.pointNr()-1);
|
... | ... | |
354 |
351 |
}
|
355 |
352 |
}
|
356 |
353 |
// 041122
|
357 |
|
|
358 |
354 |
bulge = 0.0;
|
359 |
355 |
}
|
360 |
356 |
|
... | ... | |
499 |
495 |
bulge_aux = grp.getDataAsDouble(42);
|
500 |
496 |
} else { bulge_aux = 0.0; }
|
501 |
497 |
//int cnt = lineString.pointNr();
|
502 |
|
lineString3D.remove(lineString3D.pointNr()-1);
|
503 |
|
lineString3D.remove(lineString3D.pointNr()-1);
|
504 |
|
polygon3D.remove(polygon3D.pointNr()-1);
|
505 |
|
polygon3D.remove(polygon3D.pointNr()-1);
|
506 |
|
Vector arc = createArc(ptAnterior, pt, bulge);
|
507 |
|
if (bulge>0) {
|
508 |
|
for (int i=0; i<arc.size(); i++) {
|
509 |
|
Point2D ptAux = new Point2D.Double();
|
510 |
|
ptAux = proj.createPoint(((Point2D)arc.get(i)).getX(), ((Point2D)arc.get(i)).getY());
|
511 |
|
Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), z);
|
512 |
|
lineString3D.add(ptAux3D);
|
513 |
|
polygon3D.add(ptAux3D);
|
514 |
|
if (lineString3D.pointNr() == 1) firstPt = ptAux3D;
|
|
498 |
if (ptAnterior.getX()==pt.getX() && ptAnterior.getY()==pt.getY()) {
|
|
499 |
// no se construye el arco
|
|
500 |
} else {
|
|
501 |
lineString3D.remove(lineString3D.pointNr()-1);
|
|
502 |
lineString3D.remove(lineString3D.pointNr()-1);
|
|
503 |
polygon3D.remove(polygon3D.pointNr()-1);
|
|
504 |
polygon3D.remove(polygon3D.pointNr()-1);
|
|
505 |
Vector arc = createArc(ptAnterior, pt, bulge);
|
|
506 |
if (bulge>0) {
|
|
507 |
for (int i=0; i<arc.size(); i++) {
|
|
508 |
Point2D ptAux = new Point2D.Double();
|
|
509 |
ptAux = proj.createPoint(((Point2D)arc.get(i)).getX(), ((Point2D)arc.get(i)).getY());
|
|
510 |
Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), z);
|
|
511 |
lineString3D.add(ptAux3D);
|
|
512 |
polygon3D.add(ptAux3D);
|
|
513 |
if (lineString3D.pointNr() == 1) firstPt = ptAux3D;
|
|
514 |
}
|
|
515 |
} else {
|
|
516 |
for (int i=arc.size()-1; i>=0; i--) {
|
|
517 |
Point2D ptAux = new Point2D.Double();
|
|
518 |
ptAux = proj.createPoint(((Point2D)arc.get(i)).getX(), ((Point2D)arc.get(i)).getY());
|
|
519 |
Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), z);
|
|
520 |
lineString3D.add(ptAux3D);
|
|
521 |
polygon3D.add(ptAux3D);
|
|
522 |
if (lineString3D.pointNr() == 1 || polygon3D.pointNr() == 1) firstPt = ptAux3D;
|
|
523 |
}
|
515 |
524 |
}
|
516 |
|
} else {
|
517 |
|
for (int i=arc.size()-1; i>=0; i--) {
|
518 |
|
Point2D ptAux = new Point2D.Double();
|
519 |
|
ptAux = proj.createPoint(((Point2D)arc.get(i)).getX(), ((Point2D)arc.get(i)).getY());
|
520 |
|
Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), z);
|
521 |
|
lineString3D.add(ptAux3D);
|
522 |
|
polygon3D.add(ptAux3D);
|
523 |
|
if (lineString3D.pointNr() == 1 || polygon3D.pointNr() == 1) firstPt = ptAux3D;
|
524 |
|
}
|
525 |
525 |
}
|
526 |
526 |
bulge = bulge_aux;
|
527 |
527 |
}
|
... | ... | |
575 |
575 |
if (grp.hasCode(42)) {
|
576 |
576 |
bulge_aux = grp.getDataAsDouble(42);
|
577 |
577 |
} else { bulge_aux = 0.0; }
|
578 |
|
// Borro los puntos inicio y final del arco.
|
579 |
|
lineString3D.remove(lineString3D.pointNr()-1);
|
580 |
|
lineString3D.remove(lineString3D.pointNr()-1);
|
581 |
|
Vector arc = createArc(ptAnterior, pt, bulge);
|
582 |
|
if (bulge>0) {
|
583 |
|
for (int i=0; i<arc.size(); i++) {
|
584 |
|
Point2D ptAux = new Point2D.Double();
|
585 |
|
ptAux = proj.createPoint(((Point2D)arc.get(i)).getX(), ((Point2D)arc.get(i)).getY());
|
586 |
|
Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), z);
|
587 |
|
lineString3D.add(ptAux3D);
|
588 |
|
if (lineString3D.pointNr() == 1) firstPt = ptAux3D;
|
|
578 |
if (ptAnterior.getX()==pt.getX() && ptAnterior.getY()==pt.getY()) {
|
|
579 |
// no se construye el arco
|
|
580 |
} else {
|
|
581 |
// Borro los puntos inicio y final del arco.
|
|
582 |
lineString3D.remove(lineString3D.pointNr()-1);
|
|
583 |
lineString3D.remove(lineString3D.pointNr()-1);
|
|
584 |
Vector arc = createArc(ptAnterior, pt, bulge);
|
|
585 |
if (bulge>0) {
|
|
586 |
for (int i=0; i<arc.size(); i++) {
|
|
587 |
Point2D ptAux = new Point2D.Double();
|
|
588 |
ptAux = proj.createPoint(((Point2D)arc.get(i)).getX(), ((Point2D)arc.get(i)).getY());
|
|
589 |
Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), z);
|
|
590 |
lineString3D.add(ptAux3D);
|
|
591 |
if (lineString3D.pointNr() == 1) firstPt = ptAux3D;
|
|
592 |
}
|
|
593 |
} else {
|
|
594 |
for (int i=arc.size()-1; i>=0; i--) {
|
|
595 |
Point2D ptAux = new Point2D.Double();
|
|
596 |
ptAux = proj.createPoint(((Point2D)arc.get(i)).getX(), ((Point2D)arc.get(i)).getY());
|
|
597 |
Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), z);
|
|
598 |
lineString3D.add(ptAux3D);
|
|
599 |
if (lineString3D.pointNr() == 1) firstPt = ptAux3D;
|
|
600 |
}
|
589 |
601 |
}
|
590 |
|
} else {
|
591 |
|
for (int i=arc.size()-1; i>=0; i--) {
|
592 |
|
Point2D ptAux = new Point2D.Double();
|
593 |
|
ptAux = proj.createPoint(((Point2D)arc.get(i)).getX(), ((Point2D)arc.get(i)).getY());
|
594 |
|
Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), z);
|
595 |
|
lineString3D.add(ptAux3D);
|
596 |
|
if (lineString3D.pointNr() == 1) firstPt = ptAux3D;
|
597 |
|
}
|
598 |
602 |
}
|
599 |
603 |
bulge = bulge_aux;
|
600 |
604 |
}
|
... | ... | |
697 |
701 |
y = ((Double) g.getData()).doubleValue();
|
698 |
702 |
if (hasBulge) {
|
699 |
703 |
Point2D finalPoint = new Point2D.Double(x, y);
|
700 |
|
Vector arc = createArc(((LineString3D)lineString3D).get(lineString3D.pointNr()-1), finalPoint, bulgeLwp);
|
701 |
|
lineString3D.remove(lineString3D.pointNr()-1);
|
702 |
|
if (isDoubleFeatured) polygon3D.remove(polygon3D.pointNr()-1);
|
703 |
|
if (bulgeLwp>0) {
|
704 |
|
for (int k=0; k<arc.size(); k++) {
|
705 |
|
Point2D ptAux = new Point2D.Double();
|
706 |
|
ptAux = proj.createPoint(((Point2D)arc.get(k)).getX(), ((Point2D)arc.get(k)).getY());
|
707 |
|
//System.out.println("createLwPolyline: ptAux = " + ptAux);
|
708 |
|
Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), elev);
|
709 |
|
lineString3D.add(ptAux3D);
|
710 |
|
//if (lineString.pointNr() == 1) firstPt = ptAux;
|
711 |
|
if (isDoubleFeatured) polygon3D.add(ptAux3D);
|
712 |
|
if (lineString3D.pointNr() == 1 || polygon3D.pointNr() == 1) firstPt = ptAux3D;
|
713 |
|
}
|
|
704 |
if (((LineString3D)lineString3D).get(lineString3D.pointNr()-1).getX()==finalPoint.getX() && ((LineString3D)lineString3D).get(lineString3D.pointNr()-1).getY()==finalPoint.getY()) {
|
|
705 |
// no se construye el arco
|
714 |
706 |
} else {
|
715 |
|
for (int k=arc.size()-1; k>=0; k--) {
|
716 |
|
Point2D ptAux = new Point2D.Double();
|
717 |
|
ptAux = proj.createPoint(((Point2D)arc.get(k)).getX(), ((Point2D)arc.get(k)).getY());
|
718 |
|
Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), elev);
|
719 |
|
lineString3D.add(ptAux3D);
|
720 |
|
if (isDoubleFeatured) polygon3D.add(ptAux3D);
|
721 |
|
if (lineString3D.pointNr() == 1 || polygon3D.pointNr() == 1) firstPt = ptAux3D;
|
|
707 |
Vector arc = createArc(((LineString3D)lineString3D).get(lineString3D.pointNr()-1), finalPoint, bulgeLwp);
|
|
708 |
lineString3D.remove(lineString3D.pointNr()-1);
|
|
709 |
if (isDoubleFeatured) polygon3D.remove(polygon3D.pointNr()-1);
|
|
710 |
if (bulgeLwp>0) {
|
|
711 |
for (int k=0; k<arc.size(); k++) {
|
|
712 |
Point2D ptAux = new Point2D.Double();
|
|
713 |
ptAux = proj.createPoint(((Point2D)arc.get(k)).getX(), ((Point2D)arc.get(k)).getY());
|
|
714 |
//System.out.println("createLwPolyline: ptAux = " + ptAux);
|
|
715 |
Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), elev);
|
|
716 |
lineString3D.add(ptAux3D);
|
|
717 |
//if (lineString.pointNr() == 1) firstPt = ptAux;
|
|
718 |
if (isDoubleFeatured) polygon3D.add(ptAux3D);
|
|
719 |
if (lineString3D.pointNr() == 1 || polygon3D.pointNr() == 1) firstPt = ptAux3D;
|
|
720 |
}
|
|
721 |
} else {
|
|
722 |
for (int k=arc.size()-1; k>=0; k--) {
|
|
723 |
Point2D ptAux = new Point2D.Double();
|
|
724 |
ptAux = proj.createPoint(((Point2D)arc.get(k)).getX(), ((Point2D)arc.get(k)).getY());
|
|
725 |
Point3D ptAux3D = new Point3D(ptAux.getX(), ptAux.getY(), elev);
|
|
726 |
lineString3D.add(ptAux3D);
|
|
727 |
if (isDoubleFeatured) polygon3D.add(ptAux3D);
|
|
728 |
if (lineString3D.pointNr() == 1 || polygon3D.pointNr() == 1) firstPt = ptAux3D;
|
|
729 |
}
|
722 |
730 |
}
|
723 |
731 |
}
|
724 |
732 |
hasBulge = false;
|