data lidar17; set Plot17lidar; /* Plot17lidar is a subset of a comma-delimited dataset that had approximately 600,000 */ /* height observations recorded in a 4x4 meter grid; there are many instances of */ /* duplicate heights at the same X,Y coordinates */ UTMEast=X; UTMNorth=Y; Height=Z; Drop x y z; run; /* The first sort, which does not eliminate duplicates, may not work with some SAS PROCs. */ /* E.g., the contour procedure did not work in earlier versions of SAS */ /* Compare the dataset sizes from these two SORTs; only the first Height for */ /* each (UTMEast,UTMNorth) combination is saved */ proc sort data=lidar17; by UTMEast UTMNorth; run; proc sort nodupkey data=lidar17 out=unique17 dupout=leftovers; by UTMEast UTMNorth; /* The DUPOUT statement saves all the deleted duplicate observations */ run; proc print data=unique17 (obs=30); run; proc print data=leftovers (obs=30); run; /* 3-dim graphics */ /* Data is too "spiky" for contour plot */ /* Some of the features are real though--the plot straddled a jeep road */ proc gcontour data=unique17; plot UTMEast*UTMNorth=height; run; proc g3d data=lidar17; scatter UTMEast*UTMNorth=height/noneedle; run; /* Fix the symbol size on the above plot. See the jeep road? */ proc g3d data=lidar17; scatter UTMEast*UTMNorth=height/noneedle shape="balloon" size=0.1; run;