Revision 26395 branches/v10/libraries/libDielmoOpenLidar/src/com/dielmo/lidar/LASPoint11F0.java

View differences:

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