int get_file_length() { int len = 0; len += kml_header(GET_LENGTH); return len; }
// Convert datapool to kml file int datapool2kml(char *in_file, char *out_file, int listFlag, int stack) { datapool_type_t datapool; dbf_header_t *dbf; char *header; int nCols, nColumns; char line[1024]; // Read configuration file read_header_config("DATAPOOL", &dbf, &nCols); FILE *ifp = FOPEN(in_file, "r"); assert(ifp); check_datapool_location(ifp, &header, &nColumns); FILE *ofp = FOPEN(out_file, "w"); if (!ofp) { printf("Failed to open output file %s: %s\n", out_file, strerror(errno)); return 0; } kml_header(ofp); int ii = 0; while (fgets(line, 1022, ifp) != NULL) { strip_end_whitesp(line); // now get the individual column values datapool_init(&datapool); if (read_datapool_line(header, nColumns, line, &datapool)) { if (stack) { if (ii == 0) open_stack(ofp, &datapool); add_to_stack_kml(ofp, &datapool, nCols); } else add_to_kml(ofp, &datapool, dbf, nCols); ii++; } } if (stack) close_stack(ofp, &datapool); kml_footer(ofp); fclose(ifp); fclose(ofp); return 1; }
int open_google_earth() { char *kml_filename = appendExt(curr->filename, ".kml"); char *basename = get_basename(curr->filename); char *dirname = get_dirname(curr->filename); char *arg; if (strlen(dirname)==0) { char *tmpdir = g_get_current_dir(); dirname = escapify(tmpdir); arg = MALLOC(sizeof(char)*(strlen(dirname)+strlen(kml_filename)+20)); sprintf(arg, "%s/%s", dirname, kml_filename); //free(tmpdir); } else { arg = STRDUP(kml_filename); } char *png_file = appendExt(arg, ".png"); printf("png file: %s\n", png_file); printf("Temporary kml file: %s\n", arg); FILE *kml_file = fopen(arg, "w"); if (!kml_file) { asfPrintWarning("Couldn't open kml file!\n"); return FALSE; } dbf_header_t *dbf; int nAttr, nCoords; double *lat, *lon, center_lat, center_lon; char configFile[255], *name; meta_parameters *meta; sprintf(configFile, "%s/convert2vector.config", get_asf_share_dir()); c2v_config *cfg = read_c2v_config(configFile); kml_header(kml_file); meta = meta2vector(curr->filename, &dbf, &nAttr, &lat, &lon, &nCoords); //meta_parameters *meta = curr->meta; if (meta && meta->general && meta_is_valid_double(meta->general->center_latitude) && meta_is_valid_double(meta->general->center_longitude)) { pixbuf2png(pixbuf_small, png_file); //kml_entry_with_overlay(kml_file, meta, basename, png_file, dirname); name = get_basename(kml_filename); center_lat = meta->general->center_latitude; center_lon = meta->general->center_longitude; write_kml_placemark(kml_file, name, center_lat, center_lon, png_file, dbf, nAttr, lat, lon, nCoords, cfg); FREE(lat); FREE(lon); FREE(dbf); } else { asfPrintWarning( "Failed, metadata doesn't contain valid lat/lon info.\n"); return FALSE; } kml_footer(kml_file); fclose(kml_file); gchar *ge; printf("kml: %s\n", kml_filename); printf("dir: %s\n", dirname); #ifdef win32 char path[1024]; FindExecutable((LPCTSTR)kml_filename, (LPCTSTR)dirname, (LPTSTR)path); ge = escapify(path); printf("Path to google earth: %s\n", ge); asfSystem("\"%s\" \"%s\"", ge, arg); #else ge = find_in_path("googleearth"); if (!ge) { message_box("Couldn't find googleearth! Is it installed?"); return FALSE; } int pid = fork(); if (pid == 0) { asfSystem("\"%s\" \"%s\"", ge, arg); //unlink(kml_filename); exit(EXIT_SUCCESS); } #endif free(kml_filename); free(basename); free(dirname); free(arg); return TRUE; }
int main(int argc, char *argv[]) { FILE *infp, *outfp; int type, n, i; char *p; struct node_mcc *mcc; struct node_mnc *mnc; struct node_lac *lac; struct node_cell *cell; struct node_meas *meas; log_init(&log_info, NULL); stderr_target = log_target_create_stderr(); log_add_target(stderr_target); log_set_all_filter(stderr_target, 1); log_parse_category_mask(stderr_target, "Dxxx"); log_set_log_level(stderr_target, LOGL_INFO); if (argc <= 2) { usage: fprintf(stderr, "Usage: %s <file.log> <file.kml> " "[lines] [debug]\n", argv[0]); fprintf(stderr, "lines: Add lines between cell and " "Measurement point\n"); fprintf(stderr, "debug: Add debugging of location algorithm.\n" ); return 0; } for (i = 3; i < argc; i++) { if (!strcmp(argv[i], "lines")) log_lines = 1; else if (!strcmp(argv[i], "debug")) log_debug = 1; else goto usage; } infp = fopen(argv[1], "r"); if (!infp) { fprintf(stderr, "Failed to open '%s' for reading\n", argv[1]); return -EIO; } while ((type = read_log(infp))) { switch (type) { case LOG_TYPE_SYSINFO: add_sysinfo(); break; case LOG_TYPE_POWER: add_power(); break; } } fclose(infp); if (!strcmp(argv[2], "-")) outfp = stdout; else outfp = fopen(argv[2], "w"); if (!outfp) { fprintf(stderr, "Failed to open '%s' for writing\n", argv[2]); return -EIO; } /* document name */ p = argv[2]; while (strchr(p, '/')) p = strchr(p, '/') + 1; kml_header(outfp, p); mcc = node_mcc_first; while (mcc) { printf("MCC: %02x\n", mcc->mcc); /* folder open */ fprintf(outfp, "\t<Folder>\n"); fprintf(outfp, "\t\t<name>MCC %s (%s)</name>\n", gsm_print_mcc(mcc->mcc), gsm_get_mcc(mcc->mcc)); fprintf(outfp, "\t\t<open>0</open>\n"); mnc = mcc->mnc; while (mnc) { printf(" MNC: %02x\n", mnc->mnc); /* folder open */ fprintf(outfp, "\t\t<Folder>\n"); fprintf(outfp, "\t\t\t<name>MNC %s (%s)</name>\n", gsm_print_mnc(mnc->mnc), gsm_get_mnc(mcc->mcc, mnc->mnc)); fprintf(outfp, "\t\t\t<open>0</open>\n"); lac = mnc->lac; while (lac) { printf(" LAC: %04x\n", lac->lac); /* folder open */ fprintf(outfp, "\t\t\t<Folder>\n"); fprintf(outfp, "\t\t\t\t<name>LAC %04x</name>\n", lac->lac); fprintf(outfp, "\t\t\t\t<open>0</open>\n"); cell = lac->cell; while (cell) { printf(" CELL: %04x\n", cell->cellid); fprintf(outfp, "\t\t\t\t<Folder>\n"); fprintf(outfp, "\t\t\t\t\t<name>CELL-ID %04x</name>\n", cell->cellid); fprintf(outfp, "\t\t\t\t\t<open>0</open>\n"); meas = cell->meas; n = 0; while (meas) { if (meas->ta_valid) printf(" TA: %d\n", meas->ta); if (meas->gps_valid) kml_meas(outfp, meas, ++n, mcc->mcc, mnc->mnc, lac->lac, cell->cellid); meas = meas->next; } kml_cell(outfp, cell); /* folder close */ fprintf(outfp, "\t\t\t\t</Folder>\n"); cell = cell->next; } /* folder close */ fprintf(outfp, "\t\t\t</Folder>\n"); lac = lac->next; } /* folder close */ fprintf(outfp, "\t\t</Folder>\n"); mnc = mnc->next; } /* folder close */ fprintf(outfp, "\t</Folder>\n"); mcc = mcc->next; } #if 0 FIXME: power /* folder open */ fprintf(outfp, "\t<Folder>\n"); fprintf(outfp, "\t\t<name>Power</name>\n"); fprintf(outfp, "\t\t<open>0</open>\n"); power = node_power_first; n = 0; while (power) { /* folder open */ fprintf(outfp, "\t\t<Folder>\n"); fprintf(outfp, "\t\t\t<name>Power %d</name>\n", ++n); fprintf(outfp, "\t\t\t<open>0</open>\n"); /* folder close */ fprintf(outfp, "\t\t</Folder>\n"); power = power->next; } /* folder close */ fprintf(outfp, "\t</Folder>\n"); #endif kml_footer(outfp); fclose(outfp); return 0; }
int main(void){ int web_server_welcome_socket = open_welcome_socket_TCP(2080, false); while(1) { int web_server_connected_socket = accept_connection_from_client_TCP(web_server_welcome_socket); if (web_server_connected_socket >= 0){ int len = get_file_length() + 1350; char content_length[100]; sprintf(content_length, "Content-Length: %d", len); send_string_line_TCP(web_server_connected_socket, "HTTP/1.1 200 OK"); send_string_line_TCP(web_server_connected_socket, "Connection: close"); send_string_line_TCP(web_server_connected_socket, "Content-Type: application/vnd.google-earth.kml+xml"); send_string_line_TCP(web_server_connected_socket, content_length); /*send_string_line_TCP(web_server_connected_socket, "Content-Length: 1437");*/ send_string_line_TCP(web_server_connected_socket, "Server: Indy/DevSnapshot"); send_string_line_TCP(web_server_connected_socket, ""); kml_header(web_server_connected_socket); /*send_string_line_TCP(web_server_connected_socket, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); send_string_line_TCP(web_server_connected_socket, "<kml xmlns=\"http://earth.google.com/kml/2.0\">"); */ send_string_line_TCP(web_server_connected_socket, " <Folder>"); send_string_line_TCP(web_server_connected_socket, " <Placemark>"); send_string_line_TCP(web_server_connected_socket, " <name>Aircraft</name>"); send_string_line_TCP(web_server_connected_socket, " <description>Marks current aircraft position (MyFsGoogleEarth)</description>"); send_string_line_TCP(web_server_connected_socket, " <visibility>1</visibility>"); send_string_line_TCP(web_server_connected_socket, " <styleUrl>root://styles#default+icon=0x307</styleUrl>"); send_string_line_TCP(web_server_connected_socket, " <Style>"); send_string_line_TCP(web_server_connected_socket, "<labelColor>ff00ffff</labelColor>"); send_string_line_TCP(web_server_connected_socket, " <IconStyle>"); send_string_line_TCP(web_server_connected_socket, " <Icon>"); send_string_line_TCP(web_server_connected_socket, " <href>root://icons/palette-2.png</href>"); send_string_line_TCP(web_server_connected_socket, " <w>32</w>"); send_string_line_TCP(web_server_connected_socket, " <h>32</h>"); send_string_line_TCP(web_server_connected_socket, " </Icon>"); send_string_line_TCP(web_server_connected_socket, " </IconStyle>"); send_string_line_TCP(web_server_connected_socket, " </Style>"); send_string_line_TCP(web_server_connected_socket, " <Point>"); send_string_line_TCP(web_server_connected_socket, " <extrude>1</extrude> <altitudeMode>absolute</altitudeMode>"); send_string_line_TCP(web_server_connected_socket, " <coordinates>0.00000000,0.00000000,0.00000000</coordinates>"); send_string_line_TCP(web_server_connected_socket, " </Point>"); send_string_line_TCP(web_server_connected_socket, " </Placemark>"); send_string_line_TCP(web_server_connected_socket, " <Placemark>"); send_string_line_TCP(web_server_connected_socket, " <name>Aircraft (+1 min.)</name>"); send_string_line_TCP(web_server_connected_socket, " <description>Marks estimated aircraft position in 1 minute (MyFsGoogleEarth)</description>"); send_string_line_TCP(web_server_connected_socket, " <visibility>1</visibility>"); send_string_line_TCP(web_server_connected_socket, " <styleUrl>root://styles#default+icon=0x307</styleUrl>"); send_string_line_TCP(web_server_connected_socket, " <Style>"); send_string_line_TCP(web_server_connected_socket, "<labelScale>0.75</labelScale><labelColor>ff00ffff</labelColor>"); send_string_line_TCP(web_server_connected_socket, " <IconStyle>"); send_string_line_TCP(web_server_connected_socket, " <Icon>"); send_string_line_TCP(web_server_connected_socket, " <href>root://icons/palette-2.png</href>"); send_string_line_TCP(web_server_connected_socket, " <w>32</w>"); send_string_line_TCP(web_server_connected_socket, " <h>32</h>"); send_string_line_TCP(web_server_connected_socket, " </Icon>"); send_string_line_TCP(web_server_connected_socket, " <scale>0.6</scale>"); send_string_line_TCP(web_server_connected_socket, " </IconStyle>"); send_string_line_TCP(web_server_connected_socket, " </Style>"); send_string_line_TCP(web_server_connected_socket, " <Point>"); send_string_line_TCP(web_server_connected_socket, " <extrude>1</extrude> <altitudeMode>absolute</altitudeMode>"); send_string_line_TCP(web_server_connected_socket, " <coordinates>0.00000000,0.00000000,0.00000000</coordinates>"); send_string_line_TCP(web_server_connected_socket, " </Point>"); send_string_line_TCP(web_server_connected_socket, " </Placemark>"); send_string_line_TCP(web_server_connected_socket, " </Folder>"); send_string_line_TCP(web_server_connected_socket, "</kml>"); } } }
int open_google_earth() { char *kml_filename = appendExt(curr->filename, ".kml"); char *basename = get_basename(curr->filename); char *dirname = get_dirname(curr->filename); char *arg; if (strlen(dirname)==0) { char *tmpdir = g_get_current_dir(); dirname = escapify(tmpdir); arg = MALLOC(sizeof(char)*(strlen(dirname)+strlen(kml_filename)+20)); sprintf(arg, "%s/%s", dirname, kml_filename); //free(tmpdir); } else { arg = STRDUP(kml_filename); } char *png_file = appendExt(arg, ".png"); printf("png file: %s\n", png_file); printf("Temporary kml file: %s\n", arg); FILE *kml_file = fopen(arg, "w"); if (!kml_file) { asfPrintWarning("Couldn't open kml file!\n"); return FALSE; } kml_header(kml_file); meta_parameters *meta = curr->meta; if (meta && meta->general && meta_is_valid_double(meta->general->center_latitude) && meta_is_valid_double(meta->general->center_longitude)) { pixbuf2png(pixbuf_small, png_file); kml_entry_with_overlay(kml_file, meta, basename, png_file, dirname); } else { asfPrintWarning( "Failed, metadata doesn't contain valid lat/lon info.\n"); return FALSE; } kml_footer(kml_file); fclose(kml_file); gchar *ge; printf("kml: %s\n", kml_filename); printf("dir: %s\n", dirname); #ifdef win32 char path[1024]; FindExecutable((LPCTSTR)kml_filename, (LPCTSTR)dirname, (LPTSTR)path); ge = escapify(path); printf("Path to google earth: %s\n", ge); asfSystem("\"%s\" \"%s\"", ge, arg); #else ge = find_in_path("googleearth"); if (!ge) { message_box("Couldn't find googleearth! Is it installed?"); return FALSE; } int pid = fork(); if (pid == 0) { asfSystem("\"%s\" \"%s\"", ge, arg); //unlink(kml_filename); exit(EXIT_SUCCESS); } #endif free(kml_filename); free(basename); free(dirname); free(arg); return TRUE; }