Revision 26395 branches/v10/libraries/libDielmoOpenLidar/src/com/dielmo/lidar/LASPoint11F0.java
LASPoint11F0.java | ||
---|---|---|
51 | 51 |
|
52 | 52 |
import java.awt.geom.Point2D; |
53 | 53 |
import java.nio.ByteBuffer; |
54 |
import java.sql.Types; |
|
55 | 54 |
|
56 |
import com.hardcode.gdbms.engine.values.DoubleValue; |
|
57 |
import com.hardcode.gdbms.engine.values.IntValue; |
|
58 |
import com.hardcode.gdbms.engine.values.Value; |
|
59 |
import com.hardcode.gdbms.engine.values.ValueFactory; |
|
60 |
import com.iver.cit.gvsig.fmap.drivers.FieldDescription; |
|
61 |
import com.iver.utiles.bigfile.BigByteBuffer2; |
|
55 |
import com.dielmo.lidar.fieldsDescription.ColumnDescription; |
|
56 |
import com.dielmo.lidar.fieldsDescription.ContainerColumnDescription; |
|
62 | 57 |
|
63 | 58 |
/** |
64 | 59 |
* LAS point that implement the LAS point data version LAS1.1 |
... | ... | |
763 | 758 |
* @param index asked point index. (row) |
764 | 759 |
* @return Value of row and column indicated |
765 | 760 |
*/ |
766 |
public Value getFieldValueByIndex(BigByteBuffer2 bb, int indexField,
|
|
761 |
public Object getFieldValueByIndex(BigByteBuffer2 bb, int indexField,
|
|
767 | 762 |
LidarHeader hdr, long index) { |
768 | 763 |
|
769 | 764 |
readPoint(bb, hdr, index); |
... | ... | |
771 | 766 |
switch(indexField) { |
772 | 767 |
|
773 | 768 |
case 0: |
774 |
return ValueFactory.createValue(getX()*hdr.getXScale()+hdr.getXOffset());
|
|
769 |
return getX() * hdr.getXScale() + hdr.getXOffset();
|
|
775 | 770 |
|
776 | 771 |
case 1: |
777 |
return ValueFactory.createValue(getY()*hdr.getYScale()+hdr.getYOffset());
|
|
772 |
return getY() * hdr.getYScale() + hdr.getYOffset();
|
|
778 | 773 |
|
779 | 774 |
case 2: |
780 |
return ValueFactory.createValue(getZ()*hdr.getZScale()+hdr.getZOffset());
|
|
775 |
return getZ() * hdr.getZScale() + hdr.getZOffset();
|
|
781 | 776 |
|
782 | 777 |
case 3: |
783 |
return ValueFactory.createValue(getIntensity());
|
|
778 |
return getIntensity();
|
|
784 | 779 |
|
785 | 780 |
case 4: |
786 |
return ValueFactory.createValue(getReturnNumber());
|
|
781 |
return getReturnNumber();
|
|
787 | 782 |
|
788 | 783 |
case 5: |
789 |
return ValueFactory.createValue(getNumberOfReturn());
|
|
784 |
return getNumberOfReturn();
|
|
790 | 785 |
|
791 | 786 |
case 6: |
792 |
return ValueFactory.createValue(getScanDirectionFlag());
|
|
787 |
return getScanDirectionFlag();
|
|
793 | 788 |
|
794 | 789 |
case 7: |
795 |
return ValueFactory.createValue(getEdgeOfFlightLine());
|
|
790 |
return getEdgeOfFlightLine();
|
|
796 | 791 |
|
797 | 792 |
case 8: |
798 |
return ValueFactory.createValue(getClassification());
|
|
793 |
return (byte)getClassification();
|
|
799 | 794 |
|
800 | 795 |
case 9: |
801 |
return ValueFactory.createValue(getSynthetic());
|
|
796 |
return getSynthetic();
|
|
802 | 797 |
|
803 | 798 |
case 10: |
804 |
return ValueFactory.createValue(getKeyPoint());
|
|
799 |
return getKeyPoint();
|
|
805 | 800 |
|
806 | 801 |
case 11: |
807 |
return ValueFactory.createValue(getWithheld());
|
|
802 |
return getWithheld();
|
|
808 | 803 |
|
809 | 804 |
case 12: |
810 |
return ValueFactory.createValue(getScanAngleRank());
|
|
805 |
return getScanAngleRank();
|
|
811 | 806 |
|
812 | 807 |
case 13: |
813 |
return ValueFactory.createValue(getUserData());
|
|
808 |
return (byte)getUserData();
|
|
814 | 809 |
|
815 | 810 |
case 14: |
816 |
return ValueFactory.createValue(getPointSourceID());
|
|
811 |
return getPointSourceID();
|
|
817 | 812 |
} |
818 | 813 |
|
819 | 814 |
return null; |
820 | 815 |
} |
821 | 816 |
|
822 |
public Value getFieldValueByName(BigByteBuffer2 bb, String nameField, LidarHeader hdr,
|
|
817 |
public Object getFieldValueByName(BigByteBuffer2 bb, String nameField, LidarHeader hdr,
|
|
823 | 818 |
long index) { |
824 | 819 |
|
825 | 820 |
readPoint(bb, hdr, index); |
826 | 821 |
|
827 | 822 |
if(nameField.equalsIgnoreCase("X")) |
828 |
return ValueFactory.createValue(getX()*hdr.getXScale()+hdr.getXOffset());
|
|
823 |
return getX()*hdr.getXScale()+hdr.getXOffset();
|
|
829 | 824 |
else if(nameField.equalsIgnoreCase("Y")) |
830 |
return ValueFactory.createValue(getY()*hdr.getYScale()+hdr.getYOffset());
|
|
825 |
return getY()*hdr.getYScale()+hdr.getYOffset();
|
|
831 | 826 |
else if(nameField.equalsIgnoreCase("Z")) |
832 |
return ValueFactory.createValue(getZ()*hdr.getZScale()+hdr.getZOffset());
|
|
827 |
return getZ()*hdr.getZScale()+hdr.getZOffset();
|
|
833 | 828 |
else if(nameField.equalsIgnoreCase("Intensity")) |
834 |
return ValueFactory.createValue(getIntensity());
|
|
829 |
return getIntensity();
|
|
835 | 830 |
else if(nameField.equalsIgnoreCase("Return_Number")) |
836 |
return ValueFactory.createValue(getReturnNumber());
|
|
831 |
return getReturnNumber();
|
|
837 | 832 |
else if(nameField.equalsIgnoreCase("Number_of_Returns")) |
838 |
return ValueFactory.createValue(getNumberOfReturn());
|
|
833 |
return getNumberOfReturn();
|
|
839 | 834 |
else if(nameField.equalsIgnoreCase("Scan_Direction_Flag")) |
840 |
return ValueFactory.createValue(getScanDirectionFlag());
|
|
835 |
return getScanDirectionFlag();
|
|
841 | 836 |
else if(nameField.equalsIgnoreCase("Edge_of_Flight_Line")) |
842 |
return ValueFactory.createValue(getEdgeOfFlightLine());
|
|
837 |
return getEdgeOfFlightLine();
|
|
843 | 838 |
else if(nameField.equalsIgnoreCase("Classification")) |
844 |
return ValueFactory.createValue(getClassification());
|
|
839 |
return (byte)getClassification();
|
|
845 | 840 |
else if(nameField.equalsIgnoreCase("Synthetic")) |
846 |
return ValueFactory.createValue(getSynthetic());
|
|
841 |
return getSynthetic();
|
|
847 | 842 |
else if(nameField.equalsIgnoreCase("Key_Point")) |
848 |
return ValueFactory.createValue(getKeyPoint());
|
|
843 |
return getKeyPoint();
|
|
849 | 844 |
else if(nameField.equalsIgnoreCase("Withheld")) |
850 |
return ValueFactory.createValue(getWithheld());
|
|
845 |
return getWithheld();
|
|
851 | 846 |
else if(nameField.equalsIgnoreCase("Scan_Angle_Rank")) |
852 |
return ValueFactory.createValue(getScanAngleRank());
|
|
847 |
return getScanAngleRank();
|
|
853 | 848 |
else if(nameField.equalsIgnoreCase("User_Data")) |
854 |
return ValueFactory.createValue(getUserData());
|
|
849 |
return (byte)getUserData();
|
|
855 | 850 |
else if(nameField.equalsIgnoreCase("Point_Source_ID")) |
856 |
return ValueFactory.createValue(getPointSourceID());
|
|
851 |
return getPointSourceID();
|
|
857 | 852 |
|
858 | 853 |
return null; |
859 | 854 |
} |
860 | 855 |
|
861 |
public FieldDescription[] getFieldDescription() { |
|
862 |
FieldDescription fieldDesc; |
|
863 |
FieldDescription[] fields; |
|
856 |
|
|
857 |
public ContainerColumnDescription getColumnsDescription(ContainerColumnDescription fields) { |
|
864 | 858 |
|
865 |
fields = new FieldDescription[15]; |
|
866 |
|
|
867 |
fieldDesc = new FieldDescription(); |
|
868 |
fieldDesc.setFieldName("X"); |
|
869 |
fieldDesc.setFieldType(Types.DOUBLE); |
|
870 |
fieldDesc.setFieldLength(20); |
|
871 |
fieldDesc.setFieldDecimalCount(3); |
|
872 |
fields[0] = fieldDesc; |
|
873 |
|
|
874 |
fieldDesc = new FieldDescription(); |
|
875 |
fieldDesc.setFieldName("Y"); |
|
876 |
fieldDesc.setFieldType(Types.DOUBLE); |
|
877 |
fieldDesc.setFieldLength(20); |
|
878 |
fieldDesc.setFieldDecimalCount(3); |
|
879 |
fields[1] = fieldDesc; |
|
880 |
|
|
881 |
fieldDesc = new FieldDescription(); |
|
882 |
fieldDesc.setFieldName("Z"); |
|
883 |
fieldDesc.setFieldType(Types.DOUBLE); |
|
884 |
fieldDesc.setFieldLength(20); |
|
885 |
fieldDesc.setFieldDecimalCount(3); |
|
886 |
fields[2] = fieldDesc; |
|
887 |
|
|
888 |
fieldDesc = new FieldDescription(); |
|
889 |
fieldDesc.setFieldName("Intensity"); |
|
890 |
fieldDesc.setFieldType(Types.INTEGER); |
|
891 |
fieldDesc.setFieldLength(5); |
|
892 |
fieldDesc.setFieldDecimalCount(0); |
|
893 |
fields[3] = fieldDesc; |
|
894 |
|
|
895 |
fieldDesc = new FieldDescription(); |
|
896 |
fieldDesc.setFieldName("Return_Number"); |
|
897 |
fieldDesc.setFieldType(Types.INTEGER); |
|
898 |
fieldDesc.setFieldLength(1); |
|
899 |
fieldDesc.setFieldDecimalCount(0); |
|
900 |
fields[4] = fieldDesc; |
|
901 |
|
|
902 |
fieldDesc = new FieldDescription(); |
|
903 |
fieldDesc.setFieldName("Number_of_Returns"); |
|
904 |
fieldDesc.setFieldType(Types.INTEGER); |
|
905 |
fieldDesc.setFieldLength(1); |
|
906 |
fieldDesc.setFieldDecimalCount(0); |
|
907 |
fields[5] = fieldDesc; |
|
908 |
|
|
909 |
fieldDesc = new FieldDescription(); |
|
910 |
fieldDesc.setFieldName("Scan_Direction_Flag"); |
|
911 |
fieldDesc.setFieldType(Types.INTEGER); |
|
912 |
fieldDesc.setFieldLength(1); |
|
913 |
fieldDesc.setFieldDecimalCount(0); |
|
914 |
fields[6] = fieldDesc; |
|
915 |
|
|
916 |
fieldDesc = new FieldDescription(); |
|
917 |
fieldDesc.setFieldName("Edge_of_Flight_Line"); |
|
918 |
fieldDesc.setFieldType(Types.INTEGER); |
|
919 |
fieldDesc.setFieldLength(1); |
|
920 |
fieldDesc.setFieldDecimalCount(0); |
|
921 |
fields[7] = fieldDesc; |
|
922 |
|
|
923 |
fieldDesc = new FieldDescription(); |
|
924 |
fieldDesc.setFieldName("Classification"); |
|
925 |
fieldDesc.setFieldType(Types.INTEGER); |
|
926 |
fieldDesc.setFieldLength(3); |
|
927 |
fieldDesc.setFieldDecimalCount(0); |
|
928 |
fields[8] = fieldDesc; |
|
859 |
fields.add("X", ColumnDescription.DOUBLE, 20, 3, 0.0); |
|
860 |
fields.add("Y", ColumnDescription.DOUBLE, 20, 3, 0.0); |
|
861 |
fields.add("Z", ColumnDescription.DOUBLE, 20, 3, 0.0); |
|
862 |
fields.add("Intensity", ColumnDescription.INT, 5, 0, 0); |
|
863 |
fields.add("Return_Number", ColumnDescription.BYTE, 1, 0, 0); |
|
864 |
fields.add("Number_of_Returns", ColumnDescription.BYTE, 1, 0, 0); |
|
865 |
fields.add("Scan_Direction_Flag", ColumnDescription.BYTE, 1, 0, 0); |
|
866 |
fields.add("Edge_of_Flight_Line", ColumnDescription.BYTE, 1, 0, 0); |
|
867 |
fields.add("Classification", ColumnDescription.BYTE, 1, 0, 0); |
|
868 |
fields.add("Synthetic", ColumnDescription.BYTE, 1, 0, 0); |
|
869 |
fields.add("Key_Point", ColumnDescription.BYTE, 1, 0, 0); |
|
870 |
fields.add("Withheld", ColumnDescription.BYTE, 1, 0, 0); |
|
871 |
fields.add("Scan_Angle_Rank", ColumnDescription.INT, 3, 0, 0); |
|
872 |
fields.add("User_Data", ColumnDescription.INT, 3, 0, 0); |
|
873 |
fields.add("Point_Source_ID", ColumnDescription.INT, 10, 0, 0); |
|
929 | 874 |
|
930 |
fieldDesc = new FieldDescription(); |
|
931 |
fieldDesc.setFieldName("Synthetic"); |
|
932 |
fieldDesc.setFieldType(Types.INTEGER); |
|
933 |
fieldDesc.setFieldLength(1); |
|
934 |
fieldDesc.setFieldDecimalCount(0); |
|
935 |
fields[9] = fieldDesc; |
|
936 |
|
|
937 |
fieldDesc = new FieldDescription(); |
|
938 |
fieldDesc.setFieldName("Key_Point"); |
|
939 |
fieldDesc.setFieldType(Types.INTEGER); |
|
940 |
fieldDesc.setFieldLength(1); |
|
941 |
fieldDesc.setFieldDecimalCount(0); |
|
942 |
fields[10] = fieldDesc; |
|
943 |
|
|
944 |
fieldDesc = new FieldDescription(); |
|
945 |
fieldDesc.setFieldName("Withheld"); |
|
946 |
fieldDesc.setFieldType(Types.INTEGER); |
|
947 |
fieldDesc.setFieldLength(1); |
|
948 |
fieldDesc.setFieldDecimalCount(0); |
|
949 |
fields[11] = fieldDesc; |
|
950 |
|
|
951 |
fieldDesc = new FieldDescription(); |
|
952 |
fieldDesc.setFieldName("Scan_Angle_Rank"); |
|
953 |
fieldDesc.setFieldType(Types.INTEGER); |
|
954 |
fieldDesc.setFieldLength(3); |
|
955 |
fieldDesc.setFieldDecimalCount(0); |
|
956 |
fields[12] = fieldDesc; |
|
957 |
|
|
958 |
fieldDesc = new FieldDescription(); |
|
959 |
fieldDesc.setFieldName("User_Data"); |
|
960 |
fieldDesc.setFieldType(Types.INTEGER); |
|
961 |
fieldDesc.setFieldLength(3); |
|
962 |
fieldDesc.setFieldDecimalCount(0); |
|
963 |
fields[13] = fieldDesc; |
|
964 |
|
|
965 |
fieldDesc = new FieldDescription(); |
|
966 |
fieldDesc.setFieldName("Point_Source_ID"); |
|
967 |
fieldDesc.setFieldType(Types.INTEGER); |
|
968 |
fieldDesc.setFieldLength(10); |
|
969 |
fieldDesc.setFieldDecimalCount(0); |
|
970 |
fields[14] = fieldDesc; |
|
971 |
|
|
972 | 875 |
return fields; |
973 | 876 |
} |
974 |
|
|
975 |
public int getFieldType(int i) { |
|
976 |
FieldDescription[] fields; |
|
977 |
fields = getFieldDescription(); |
|
978 |
return fields[i].getFieldType(); |
|
979 |
} |
|
980 | 877 |
|
981 | 878 |
public void WritePoint(ByteBuffer bb) { |
982 | 879 |
|
... | ... | |
1023 | 920 |
|
1024 | 921 |
/* |
1025 | 922 |
* Set Point from a row |
1026 |
* @see com.dielmo.gvsig.lidar.LidarPoint#setPoint(com.hardcode.gdbms.engine.values.Value[], com.dielmo.gvsig.lidar.LidarHeader) |
|
1027 | 923 |
*/ |
1028 |
public void setPoint(Value[] row, LidarHeader hdr) {
|
|
924 |
public void setPoint(Object[] row, LidarHeader hdr) {
|
|
1029 | 925 |
|
1030 |
double auxX = ((DoubleValue)(row[0])).getValue();
|
|
1031 |
double auxY = ((DoubleValue)(row[1])).getValue();
|
|
1032 |
double auxZ = ((DoubleValue)(row[2])).getValue();
|
|
926 |
double auxX = ((Double)(row[0]));
|
|
927 |
double auxY = ((Double)(row[1]));
|
|
928 |
double auxZ = ((Double)(row[2]));
|
|
1033 | 929 |
|
1034 | 930 |
setX((int) ((auxX-hdr.getXOffset())/hdr.getXScale())); |
1035 | 931 |
setY((int) ((auxY-hdr.getYOffset())/hdr.getYScale())); |
1036 | 932 |
setZ((int) ((auxZ-hdr.getZOffset())/hdr.getZScale())); |
1037 | 933 |
|
1038 |
setIntensity(((IntValue)(row[3])).getValue());
|
|
1039 |
setReturnNumber(((IntValue)(row[4])).byteValue());
|
|
1040 |
setNumberOfReturn(((IntValue)(row[5])).byteValue());
|
|
1041 |
setScanDirectionFlag(((IntValue)(row[6])).byteValue());
|
|
1042 |
setEdgeOfFlightLine(((IntValue)(row[7])).byteValue());
|
|
1043 |
setClassification((char) (((IntValue)(row[8])).byteValue() & 0xFF));
|
|
934 |
setIntensity(((Integer)(row[3])));
|
|
935 |
setReturnNumber(((Integer)(row[4])).byteValue());
|
|
936 |
setNumberOfReturn(((Integer)(row[5])).byteValue());
|
|
937 |
setScanDirectionFlag(((Integer)(row[6])).byteValue());
|
|
938 |
setEdgeOfFlightLine(((Integer)(row[7])).byteValue());
|
|
939 |
setClassification((char) (((Integer)(row[8])).byteValue() & 0xFF));
|
|
1044 | 940 |
|
1045 |
setSynthetic((byte) (((IntValue)(row[9])).byteValue()));
|
|
1046 |
setKeyPoint((byte) (((IntValue)(row[10])).byteValue()));
|
|
1047 |
setWithheld((byte) (((IntValue)(row[11])).byteValue()));
|
|
941 |
setSynthetic((byte) (((Integer)(row[9])).byteValue()));
|
|
942 |
setKeyPoint((byte) (((Integer)(row[10])).byteValue()));
|
|
943 |
setWithheld((byte) (((Integer)(row[11])).byteValue()));
|
|
1048 | 944 |
|
1049 |
setScanAngleRank( ((IntValue)(row[12])).byteValue());
|
|
1050 |
setUserData((char) (((IntValue)(row[13])).byteValue() & 0xFF));
|
|
1051 |
setPointSourceID(((IntValue)(row[14])).getValue());
|
|
945 |
setScanAngleRank( ((Integer)(row[12])).byteValue());
|
|
946 |
setUserData((char) (((Integer)(row[13])).byteValue() & 0xFF));
|
|
947 |
setPointSourceID(((Integer)(row[14])));
|
|
1052 | 948 |
} |
1053 | 949 |
} |
Also available in: Unified diff