MCPcopy Create free account
hub / github.com/LAStools/LAStools / get_ProjectedCSTypeGeoKey

Method get_ProjectedCSTypeGeoKey

src/geoprojectionconverter.cpp:3597–3807  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3595}
3596
3597short GeoProjectionConverter::get_ProjectedCSTypeGeoKey(bool source) const {
3598 if (source && num_geo_keys) {
3599 int i;
3600 for (i = 0; i < num_geo_keys; i++) {
3601 if (geo_keys[i].key_id == 3072) {
3602 return geo_keys[i].value_offset;
3603 }
3604 }
3605 }
3606 GeoProjectionParameters* projection = get_projection(source);
3607 if (projection) {
3608 if (projection->type == GEO_PROJECTION_UTM) {
3609 if (projection->geokey) {
3610 return projection->geokey;
3611 } else {
3612 GeoProjectionParametersUTM* utm = (GeoProjectionParametersUTM*)projection;
3613 if (gcs_code == GEO_GCS_NAD83) {
3614 if (utm->utm_northern_hemisphere) {
3615 if ((1 <= utm->utm_zone_number) && (utm->utm_zone_number <= 23)) {
3616 return 26900 + utm->utm_zone_number;
3617 } else if ((59 <= utm->utm_zone_number) && (utm->utm_zone_number <= 60)) {
3618 return 3313 + utm->utm_zone_number;
3619 }
3620 }
3621 } else if (gcs_code == GEO_GCS_NAD83_CSRS) {
3622 if (utm->utm_northern_hemisphere) {
3623 if ((7 <= utm->utm_zone_number) && (utm->utm_zone_number <= 22)) {
3624 unsigned short epsg_codes_NAD83_CSRS[] = {3154, 3155, 3156, 3157, 2955, 2956, 2957, 3158,
3625 3159, 3160, 2958, 2959, 2960, 2961, 2962, 3761};
3626 return epsg_codes_NAD83_CSRS[utm->utm_zone_number - 7];
3627 }
3628 }
3629 } else if (gcs_code == GEO_GCS_NAD83_2011) {
3630 if (utm->utm_northern_hemisphere) {
3631 if ((1 <= utm->utm_zone_number) && (utm->utm_zone_number <= 19)) {
3632 return 6329 + utm->utm_zone_number;
3633 } else if ((59 <= utm->utm_zone_number) && (utm->utm_zone_number <= 60)) {
3634 return 6269 + utm->utm_zone_number;
3635 }
3636 }
3637 } else if (gcs_code == GEO_GCS_NAD83_NSRS2007) {
3638 if (utm->utm_northern_hemisphere) {
3639 if ((1 <= utm->utm_zone_number) && (utm->utm_zone_number <= 19)) {
3640 return 3707 + utm->utm_zone_number;
3641 } else if ((59 <= utm->utm_zone_number) && (utm->utm_zone_number <= 60)) {
3642 return 3647 + utm->utm_zone_number;
3643 }
3644 }
3645 } else if (gcs_code == GEO_GCS_NAD83_HARN) {
3646 if (utm->utm_northern_hemisphere) {
3647 if ((10 <= utm->utm_zone_number) && (utm->utm_zone_number <= 19)) {
3648 return 3730 + utm->utm_zone_number;
3649 } else if ((4 <= utm->utm_zone_number) && (utm->utm_zone_number <= 5)) {
3650 return 3746 + utm->utm_zone_number;
3651 }
3652 } else {
3653 if (utm->utm_zone_number == 2) {
3654 return 2195;

Callers

nothing calls this directly

Calls 1

laserrorFunction · 0.85

Tested by

no test coverage detected