Beispiel #1
0
static void close_stack(FILE *fp, datapool_type_t *datapool)
{
  fprintf(fp, "</table>\n");
  fprintf(fp, "</td></tr></table>\n");
  fprintf(fp, "  ]]></description>\n");
  fprintf(fp, "  <name>%s stack</name>\n", datapool->granule_name);
  fprintf(fp, "  <LookAt>\n");
  fprintf(fp, "    <longitude>%.4f</longitude>\n", datapool->center_lon);
  fprintf(fp, "    <latitude>%.4f</latitude>\n", datapool->center_lat);
  fprintf(fp, "    <range>400000</range>\n");
  fprintf(fp, "  </LookAt>\n");
  fprintf(fp, "  <visibility>1</visibility>\n");
  fprintf(fp, "  <open>1</open>\n");

  write_kml_style_keys(fp);

  fprintf(fp, "  <Polygon>\n");
  fprintf(fp, "    <extrude>1</extrude>\n");
  fprintf(fp, "    <altitudeMode>%s</altitudeMode>\n", altitude_mode());
  fprintf(fp, "    <outerBoundaryIs>\n");
  fprintf(fp, "     <LinearRing>\n");
  fprintf(fp, "      <coordinates>\n");
  fprintf(fp, "       %.4f,%.4f,7000\n",
      datapool->near_start_lon, datapool->near_start_lat);
  fprintf(fp, "       %.4f,%.4f,7000\n",
      datapool->far_start_lon, datapool->far_start_lat);
  fprintf(fp, "       %.4f,%.4f,7000\n",
      datapool->far_end_lon, datapool->far_end_lat);
  fprintf(fp, "       %.4f,%.4f,7000\n",
      datapool->near_end_lon, datapool->near_end_lat);
  fprintf(fp, "       %.4f,%.4f,7000\n",
      datapool->near_start_lon, datapool->near_start_lat);
  fprintf(fp, "      </coordinates>\n");
  fprintf(fp, "     </LinearRing>\n");
  fprintf(fp, "    </outerBoundaryIs>\n");
  fprintf(fp, "  </Polygon>\n");
  fprintf(fp, "</Placemark>\n");
}
Beispiel #2
0
static void add_to_kml(FILE *fp, datapool_type_t *datapool, dbf_header_t *dbf,
		       int nCols)
{
  int ii;
  char begin[10], end[10];

  // Print out according to configuration
  fprintf(fp, "<Placemark>\n");
  fprintf(fp, "  <description><![CDATA[\n");
  fprintf(fp, "<table width=\"350\"><tr><td>\n");
  fprintf(fp, "<!-- Format: DATAPOOL (generated by %s) -->\n",
              version_string("conver2vector"));
  for (ii=0; ii<nCols; ii++) {
    if (dbf[ii].visible == 0) {
      strcpy(begin, "<!--");
      strcpy(end, "-->\n");
    }
    else {
      strcpy(begin, "");
      strcpy(end, "\n");
    }
    if (strcmp(dbf[ii].header, "Granule_Name") == 0)
      fprintf(fp, "%s<strong>Granule Name</strong>: %s <br>%s",
	      begin, datapool->granule_name, end);
    else if (strcmp(dbf[ii].header, "Platform") == 0)
      fprintf(fp, "%s<strong>Platform</strong>: %s <br>%s",
	      begin, datapool->platform, end);
    else if (strcmp(dbf[ii].header, "Sensor") == 0)
      fprintf(fp, "%s<strong>Sensor</strong>: %s <br>%s",
	      begin, datapool->sensor, end);
    else if (strcmp(dbf[ii].header, "Beam_Mode") == 0)
      fprintf(fp, "%s<strong>Beam mode</strong>: %s <br>%s",
	      begin, datapool->beam_mode, end);
    else if (strcmp(dbf[ii].header, "Beam_Mode_Description") == 0)
      fprintf(fp, "%s<strong>Beam mode description</strong>: %s <br>%s",
	      begin, datapool->beam_mode_description, end);
    else if (strcmp(dbf[ii].header, "Orbit") == 0)
      fprintf(fp, "%s<strong>Orbit</strong>: %d <br>%s",
	      begin, datapool->orbit, end);
    else if (strcmp(dbf[ii].header, "Path_Number") == 0)
      fprintf(fp, "%s<strong>Path Number</strong>: %d <br>%s",
	      begin, datapool->path_number, end);
    else if (strcmp(dbf[ii].header, "Frame_Number") == 0)
      fprintf(fp, "%s<strong>Frame Number</strong>: %d <br>%s",
	      begin, datapool->frame_number, end);
    else if (strcmp(dbf[ii].header, "Acquisition_Date") == 0)
      fprintf(fp, "%s<strong>Acquisition Date</strong>: %s <br>%s",
	      begin, datapool->acquisition_date, end);
    else if (strcmp(dbf[ii].header, "Processing_Date") == 0)
      fprintf(fp, "%s<strong>Processing Date</strong>: %s <br>%s",
	      begin, datapool->processing_date, end);
    else if (strcmp(dbf[ii].header, "Processing_Level") == 0)
      fprintf(fp, "%s<strong>Processing Level</strong>: %s <br>%s",
	      begin, datapool->processing_level, end);
    else if (strcmp(dbf[ii].header, "Start_Time") == 0)
      fprintf(fp, "%s<strong>Start Time</strong>: %s <br>%s",
	      begin, datapool->start_time, end);
    else if (strcmp(dbf[ii].header, "End_Time") == 0)
      fprintf(fp, "%s<strong>End Time</strong>: %s <br>%s",
	      begin, datapool->end_time, end);
    else if (strcmp(dbf[ii].header, "Center_Lat") == 0)
      fprintf(fp, "%s<strong>Center Lat</strong>: %.4f <br>%s",
	      begin, datapool->center_lat, end);
    else if (strcmp(dbf[ii].header, "Center_Lon") == 0)
      fprintf(fp, "%s<strong>Center Lon</strong>: %.4f <br>%s",
	      begin, datapool->center_lon, end);
    else if (strcmp(dbf[ii].header, "Near_Start_Lat") == 0)
      fprintf(fp, "%s<strong>Near Start Lat</strong>: %.4f <br>%s",
	      begin, datapool->near_start_lat, end);
    else if (strcmp(dbf[ii].header, "Near_Start_Lon") == 0)
      fprintf(fp, "%s<strong>Near Start Lon</strong>: %.4f <br>%s",
	      begin, datapool->near_start_lon, end);
    else if (strcmp(dbf[ii].header, "Far_Start_Lat") == 0)
      fprintf(fp, "%s<strong>Far Start Lat</strong>: %.4f <br>%s",
	      begin, datapool->far_start_lat, end);
    else if (strcmp(dbf[ii].header, "Far_Start_Lon") == 0)
      fprintf(fp, "%s<strong>Far Start Lon</strong>: %.4f <br>%s",
	      begin, datapool->far_start_lon, end);
    else if (strcmp(dbf[ii].header, "Near_End_Lat") == 0)
      fprintf(fp, "%s<strong>Near End Lat</strong>: %.4f <br>%s",
	      begin, datapool->near_end_lat, end);
    else if (strcmp(dbf[ii].header, "Near_End_Lon") == 0)
      fprintf(fp, "%s<strong>Near End Lon</strong>: %.4f <br>%s",
	      begin, datapool->near_end_lon, end);
    else if (strcmp(dbf[ii].header, "Far_End_Lat") == 0)
      fprintf(fp, "%s<strong>Far End Lat</strong>: %.4f <br>%s",
	      begin, datapool->far_end_lat, end);
    else if (strcmp(dbf[ii].header, "Far_End_Lon") == 0)
      fprintf(fp, "%s<strong>Far End Lon</strong>: %.4f <br>%s",
	      begin, datapool->far_end_lon, end);
    else if (strcmp(dbf[ii].header, "Faraday_Rotation") == 0)
      fprintf(fp, "%s<strong>Faraday Rotation</strong>: %.1f <br>%s",
	      begin, datapool->faraday_rotation, end);
    else if (strcmp(dbf[ii].header, "Orbit_Direction") == 0)
      fprintf(fp, "%s<strong>Orbit Direction</strong>: %s <br>%s",
	      begin, datapool->orbit_direction, end);
    else if (strcmp(dbf[ii].header, "Url") == 0)
      fprintf(fp, "%s<strong>URL</strong>: %s <br>%s",
	      begin, datapool->url, end);
    else if (strcmp(dbf[ii].header, "Size") == 0)
      fprintf(fp, "%s<strong>Size (MB)</strong>: %.2f <br>%s",
	      begin, datapool->size, end);
    else if (strcmp(dbf[ii].header, "Off_Nadir_Angle") == 0)
      fprintf(fp, "%s<strong>Off Nadir Angle</strong>: %.1f <br>%s",
	      begin, datapool->off_nadir_angle, end);
  }
  fprintf(fp, "</td></tr></table>\n");
  fprintf(fp, "  ]]></description>\n");
  fprintf(fp, "  <name>%s</name>\n", datapool->granule_name);
  fprintf(fp, "  <LookAt>\n");
  fprintf(fp, "    <longitude>%.4f</longitude>\n", datapool->center_lon);
  fprintf(fp, "    <latitude>%.4f</latitude>\n", datapool->center_lat);
  fprintf(fp, "    <range>400000</range>\n");
  fprintf(fp, "  </LookAt>\n");
  fprintf(fp, "  <visibility>1</visibility>\n");
  fprintf(fp, "  <open>1</open>\n");

  write_kml_style_keys(fp);

  fprintf(fp, "  <Polygon>\n");
  fprintf(fp, "    <extrude>1</extrude>\n");
  fprintf(fp, "    <altitudeMode>%s</altitudeMode>\n", altitude_mode());
  fprintf(fp, "    <outerBoundaryIs>\n");
  fprintf(fp, "     <LinearRing>\n");
  fprintf(fp, "      <coordinates>\n");
  fprintf(fp, "       %.4f,%.4f,7000\n",
      datapool->near_start_lon, datapool->near_start_lat);
  fprintf(fp, "       %.4f,%.4f,7000\n",
      datapool->far_start_lon, datapool->far_start_lat);
  fprintf(fp, "       %.4f,%.4f,7000\n",
      datapool->far_end_lon, datapool->far_end_lat);
  fprintf(fp, "       %.4f,%.4f,7000\n",
      datapool->near_end_lon, datapool->near_end_lat);
  fprintf(fp, "       %.4f,%.4f,7000\n",
      datapool->near_start_lon, datapool->near_start_lat);
  fprintf(fp, "      </coordinates>\n");
  fprintf(fp, "     </LinearRing>\n");
  fprintf(fp, "    </outerBoundaryIs>\n");
  fprintf(fp, "  </Polygon>\n");
  fprintf(fp, "</Placemark>\n");
}
// Convert baselines to kml
void baseline2kml(int ii, struct base_pair *pairs, FILE *fp)
{
    int kk, vertices=4;
    double *lat, *lon;
    julian_date jd;
    ymd_date ymd;
    char *mon[13]= {"", "Jan", "Feb", "Mar", "Apr", "May", "Jun",
                    "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
                   };

    lat = (double *) MALLOC(sizeof(double)*(vertices+1));
    lon = (double *) MALLOC(sizeof(double)*(vertices+1));
    lat[0] = pairs->ns_lat;
    lon[0] = pairs->ns_lon;
    lat[1] = pairs->fs_lat;
    lon[1] = pairs->fs_lon;
    lat[2] = pairs->fe_lat;
    lon[2] = pairs->fe_lon;
    lat[3] = pairs->ne_lat;
    lon[3] = pairs->ne_lon;
    lat[vertices] = lat[0];
    lon[vertices] = lon[0];

    // Write information in kml file
    fprintf(fp, "<Placemark>\n");
    fprintf(fp, "<description><![CDATA[<table><tr><td width=400>\n");
    if (strcmp(pairs->m_sensor, pairs->s_sensor) == 0)
        fprintf(fp, "<strong>Sensor</strong>: %s<br>\n", pairs->m_sensor);
    else {
        fprintf(fp, "<strong>Master sensor</strong>: %s<br>\n", pairs->m_sensor);
        fprintf(fp, "<strong>Slave sensor</strong>: %s<br>\n", pairs->s_sensor);
    }
    fprintf(fp, "<strong>Mode</strong>: %s<br>\n", pairs->mode);
    fprintf(fp, "<strong>Frame</strong>: %d<br>\n", pairs->frame);
    if (strcmp_case(pairs->m_sensor, "PSR") == 0)
        fprintf(fp, "<strong>Off-nadir angle</strong>: %.4f\n", pairs->off_nadir);
    fprintf(fp, "<strong>Orbit direction</strong>: %s<br>\n",
            pairs->orbit_dir);
    fprintf(fp, "<strong>Master</strong>: %d<br>\n", pairs->master);
    sscanf(pairs->m_time, "%4d-%3dT", &jd.year, &jd.jd);
    date_jd2ymd(&jd, &ymd);
    fprintf(fp, "<strong>Master acquisition</strong>: %d-%s-%d<br>\n",
            ymd.day, mon[ymd.month], ymd.year);
    fprintf(fp, "<strong>Slave</strong>: %d<br>\n", pairs->slave);
    sscanf(pairs->s_time, "%4d-%3dT", &jd.year, &jd.jd);
    date_jd2ymd(&jd, &ymd);
    fprintf(fp, "<strong>Slave acquisition</strong>: %d-%s-%d<br>\n",
            ymd.day, mon[ymd.month], ymd.year);
    fprintf(fp, "<strong>Parallel baseline</strong>: %i<br>\n",
            pairs->b_par);
    fprintf(fp, "<strong>Perpendicular baseline</strong>: %i<br>\n",
            pairs->b_perp);
    fprintf(fp, "<strong>Temporal baseline</strong>: %i<br>\n",
            pairs->b_temp);
    for (kk=0; kk<vertices; kk++) {
        fprintf(fp, "<strong>%d</strong> - ", kk+1);
        fprintf(fp, "<strong>Lat</strong>: %9.4f, ", lat[kk]);
        fprintf(fp, "<strong>Lon</strong>: %9.4f<br>\n", lon[kk]);
    }
    fprintf(fp, "</td></tr></table>]]></description>\n");
    fprintf(fp, "<name>Master orbit: %d - Slave orbit: %d - "
            "Frame: %d</name>\n",
            pairs->master, pairs->slave, pairs->frame);
    fprintf(fp, "<LookAt>\n");
    fprintf(fp, "<longitude>%.4f</longitude>\n", pairs->c_lon);
    fprintf(fp, "<latitude>%.4f</latitude>\n", pairs->c_lat);
    fprintf(fp, "<range>500000</range>\n");
    fprintf(fp, "<heading>0</heading>\n");
    fprintf(fp, "</LookAt>\n");
    write_kml_style_keys(fp);
    fprintf(fp, "<Polygon>\n");
    fprintf(fp, "<outerBoundaryIs>\n");
    fprintf(fp, "<LinearRing>\n");
    fprintf(fp, "<extrude>1</extrude>\n");
    fprintf(fp, "<tessellate>1</tessellate>\n");
    fprintf(fp, "<altitudeMode>absolute</altitudeMode>\n");
    fprintf(fp, "<coordinates>\n");
    for (kk=0; kk<=vertices; kk++)
        fprintf(fp, "%.12f,%.12f,20000\n", lon[kk], lat[kk]);
    fprintf(fp, "</coordinates>\n");
    fprintf(fp, "</LinearRing>\n");
    fprintf(fp, "</outerBoundaryIs>\n");
    fprintf(fp, "</Polygon>\n");
    fprintf(fp, "</Placemark>\n");
    fflush(fp);

    return;
}