v8::Handle<v8::Value> js_get_geom_property(v8::Local<v8::String> property) const { v8::String::Utf8Value key(property); if (!strcmp(*key, "as_wkt")) { std::ostringstream oss; geom_as_wkt(oss); return v8::String::New(oss.str().c_str()); } else if (!strcmp(*key, "as_ewkt")) { std::ostringstream oss; oss << "SRID=4326;"; geom_as_wkt(oss); return v8::String::New(oss.str().c_str()); } else if (!strcmp(*key, "as_hex_wkb")) { std::ostringstream oss; oss << geom_as_hex_wkb(); // } else if (!strcmp(*key, "as_hex_ewkb")) { // oss << geom.to_hex(); TODO TODO return v8::String::New(oss.str().c_str()); } else if (!strcmp(*key, "as_array")) { v8::Local<v8::Array> array = v8::Array::New(2); array->Set(v8::Integer::New(0), v8::Number::New(get_lon())); array->Set(v8::Integer::New(1), v8::Number::New(get_lat())); return array; } else if (!strcmp(*key, "lon") || !strcmp(*key, "x")) { return v8::Number::New(get_lon()); } else if (!strcmp(*key, "lat") || !strcmp(*key, "y")) { return v8::Number::New(get_lat()); } else { return v8::Undefined(); } }
void feature_vector::print() { // // Display internal settings set from reading steering // string mn = "print:"; string def = "<default>"; int w1=30; //arbitrary spacing size that makes formatting look pretty for data names int w2=30; //arbitrary spacing size that makes formatting look pretty for data options cout<<cn<<mn<<" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" <<"\n"<<setw(w1)<<"DEBUG: " <<setw(w2)<<(debug? "ON":"OFF") <<"\n"<<setw(w1)<<"Feature Vector File Name: " <<setw(w2)<<"\""<<get_fv_file_name()<<"\"" <<"\n"<<setw(w1)<<"Feature Vector Extention: " <<setw(w2)<<"\""<<get_fv_ext()<<"\"" <<"\n"<<setw(w1)<<"Time: " <<setw(w2)<<"\""<<get_time_stamp()<<"\"" <<"\n"<<setw(w1)<<"ID: " <<setw(w2)<<"\""<<get_id()<<"\"" <<"\n"<<setw(w1)<<"Latitude: " <<setw(w2)<<"\""<<get_lat()<<"\"" <<"\n"<<setw(w1)<<"Longitude: " <<setw(w2)<<"\""<<get_lon()<<"\"" <<"\n"<<setw(w1)<<"Mac Address: " <<setw(w2)<<"\""<<get_macaddr()<<"\""<<endl; cout<<cn<<mn<<" <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<endl; return; }
// Read a status buffer all of the key observation paramters void guppi_read_subint_params(char *buf, struct guppi_params *g, struct psrfits *p) { // Parse packet size, # of packets, etc. get_lon("PKTIDX", g->packetindex, -1L); get_int("PKTSIZE", g->packetsize, 0); get_int("NPKT", g->n_packets, 0); get_int("NDROP", g->n_dropped, 0); get_dbl("DROPAVG", g->drop_frac_avg, 0.0); get_dbl("DROPTOT", g->drop_frac_tot, 0.0); get_int("BLOCSIZE", g->packets_per_block, 0); if (g->packetsize>0) g->packets_per_block /= g->packetsize; if (g->n_packets>0) g->drop_frac = (double) g->n_dropped / (double) g->n_packets; else g->drop_frac = 0.0; // Valid obs start time get_int("STTVALID", g->stt_valid, 0); // Observation params get_dbl("AZ", p->sub.tel_az, 0.0); if (p->sub.tel_az < 0.0) p->sub.tel_az += 360.0; get_dbl("ZA", p->sub.tel_zen, 0.0); get_dbl("RA", p->sub.ra, 0.0); get_dbl("DEC", p->sub.dec, 0.0); // Backend HW parameters get_int("ACC_LEN", g->decimation_factor, 0); get_int("NBITSADC", g->n_bits_adc, 8); get_int("PFB_OVER", g->pfb_overlap, 4); // Check fold mode int fold=0; if (strstr("PSR", p->hdr.obs_mode)!=NULL) { fold=1; } if (strstr("CAL", p->hdr.obs_mode)!=NULL) { fold=1; } // Fold-specifc stuff if (fold) { get_dbl("TSUBINT", p->sub.tsubint, 0.0); get_dbl("OFFS_SUB", p->sub.offs, 0.0); get_int("NPOLYCO", p->fold.n_polyco_sets, 0); } else { int bytes_per_dt = p->hdr.nchan * p->hdr.npol * p->hdr.nbits / 8; p->sub.offs = p->hdr.dt * (double)(g->packetindex * g->packetsize / bytes_per_dt) + 0.5 * p->sub.tsubint; p->fold.n_polyco_sets = 0; } { // MJD and LST calcs int imjd, smjd, lst_secs; double offs, mjd; get_current_mjd(&imjd, &smjd, &offs); mjd = (double) imjd + ((double) smjd + offs) / 86400.0; get_current_lst(mjd, &lst_secs); p->sub.lst = (double) lst_secs; } // Until we need them... p->sub.feed_ang = 0.0; p->sub.pos_ang = 0.0; p->sub.par_ang = 0.0; // Galactic coords slaEqgal(p->sub.ra*DEGTORAD, p->sub.dec*DEGTORAD, &p->sub.glon, &p->sub.glat); p->sub.glon *= RADTODEG; p->sub.glat *= RADTODEG; }
std::ostream& geom_as_wkt(std::ostream& s) const { return s << "POINT(" << get_lon() << " " << get_lat() << ")"; }