From 25a62b80579cb4f76d7f6f6a84735aa59ba0d199 Mon Sep 17 00:00:00 2001 From: Jacob Perkins Date: Wed, 3 Aug 2011 20:55:41 +0000 Subject: [PATCH] added to GeoFeature the ability to turn itself into a "Thing", way harder than it has any right to be, simple udf that calls that function --- lib/mapfish-geo-lib-1.2-SNAPSHOT.jar | Bin 14322 -> 0 bytes lib/mapfish-geo-lib-1.3-SNAPSHOT.jar | Bin 0 -> 14383 bytes pom.xml | 4 +- .../infochimps/hadoop/pig/geo/GeoFeature.java | 27 +++++++++ .../hadoop/pig/geo/GeoJSONToThing.java | 56 ++++++++++++++++++ 5 files changed, 85 insertions(+), 2 deletions(-) delete mode 100644 lib/mapfish-geo-lib-1.2-SNAPSHOT.jar create mode 100644 lib/mapfish-geo-lib-1.3-SNAPSHOT.jar create mode 100644 src/main/java/com/infochimps/hadoop/pig/geo/GeoJSONToThing.java diff --git a/lib/mapfish-geo-lib-1.2-SNAPSHOT.jar b/lib/mapfish-geo-lib-1.2-SNAPSHOT.jar deleted file mode 100644 index 11de66c8784752923194753589ee02b639ee6855..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14322 zcmbWe1z26lvNlYDYjAh>;O_3SaSQJ5PH=bE;O+!>cXxLuxCatGaxybHCv)cB|NhOh z*b8>m+uf_HR#%tENdkjF0sUwoAvrw%y7}W5j#^@TkXn*P z00MkBPdOfys*~8IDLo8;BneP($e=7o#)d|WV+5dhAdLX7U%!!Hw3q1IRtp(=6o>ag z)~bxRh(0oM1G^LvY1M4i1p0GaKtOMQ8$QVExUB7r{~GzH?HM@BUshghu#{X!O+>xl90f^rtDp$K0&oQ@8jnoe^syAb z?^{W@Gt6-0hqaj#aA`2tfvaQf32HFQ1xK2W?c}wJIYU)Ct`4m)$;Jat_j!x;t=sGL zx}V>)OXaV8RsMFtXPgYRPN~#0Np-t+%wzaDf@VjqlAhWNR~&_%HG}88IesKcL=xp3 z8Zr{A-u(2QQ#4VVH41w<22}bsS(n*3J@vq7ihj+hdj8t7L2EpUSO)#Why!MUwSBv{ zqTN_zpS?4L_Pd5xS>$pdkcQ8}|W$EeWiWOrMdME~bqFselK` zfHSwf>;mzUiQxN)xWEJhb4ac{ih--n(OX0gv4mk54TuO?MIY2^SRa_fL)KIg0bAhR z3(+oJi*j9DYNud9RLV>>*?xB+iZMZrTtw^d zn#^ubyWu>Z!rt-n`~bR%Q-UhR#dx_Y0OwA6M}uCJ?4r9(BDf_7#=v7VsA6sjwj-1Q z9f+aG^pL04kZ|%~Nf!T=M-lTfKOEi362-0cKvQe*FxFk*asmx6z>LkR ztowwc2Zh)1J27 z%E~h+mrM*>wv1LUDVx5;8{eDZ3+5K@CHQOQ28T*(n2kV#b|jZplpuzSnZuheGA++NC4JD{8wOORs}-traRwAsuslU zqm}OF`=t%Wfgpb*biUh1eZ*?sB?EE-cwcpzLS*GLm&JYCg3vU_jk#fy&a#+P+%c7? z_ZibI5Y=Z8jH6k7jM zxJZhX1uw9rb!Uf#OByg#BwH1tD2_>Y3?OoyHnqjVB?y>hm1cgOLgc(g zKkabCa)29dHB4V`kB4)e=<807YbDM~K<|@9aVt!+&TmL+dJV85B@k& zVNsu*h%L~Ok9jEeGplyQvBpET3cs*f_khwr*P8I?_ZSPmuw(JO-|g7s18yfzeZO>J zh}E8xRcm~3%tu$zcSo7LoYTkQ$?bDEZlj%4$(Z-3?py(B+V7U}R@Aw5BEG^B(u})( zZEI~Sl80s*@11#@Cl6F`1UJvw31pwXyF!{|Vvu{!B^W59ncYcBi<(cq_z46B`V8V3 z?BkQWlfT{qxRVguj>VL(&)_~EHFbN0xMVBUs_5pI#*^jwC)R+sIN9iG57*=!gt;Iy zv5|6eb{Q%&(>RMb7Xi#0%j+f|TWN5iLEVn`jTS^H=d0iqHiw&|lpXI)+w|0cf~#d! zYrI6A$Y&q` z=L8>e6?I*t>4po8X&c15OjtUu!~+`VQJ$^aOK0 znJ}zkP}~m5F?>#UzV8Vjc1uKn5)0g`*xky@wv=aD4F_;UcM@B-uSbDmY?14VEkZqu zKx*M&y#pf^qEE3fBhR=rP+U@mDNx;V48Ik-qtZz)r& zCHl97a!X&4?Buj-!G_f8<=BwSI9In>D>>yiAfF< zG~=&36gMj7C-C+5Y(kLVI8(zNDvCqXlw;a*Eml-M6%y2Bgl;iKH}TTJV%R+S!yJl% zdJT}&b@unz=S)wNL~p|(Ii|8D1)Cu?n+!FRDXI^tM&;TsJ;o-?*NBy-R#vF@^>rdQ z$vz1tZ{Yz}EfefuC*vU`*$T5X3_3d`dmpFEF($ct0 zwu%JMM5vyvgCB~P#7rqZ!qq!X;D0H%vVNNnEZF!yC$x{K(^>$FKvLfK7GrvgJ>-W^U@16H^J6a3(kO_W5{*)_uuGMpz8z*-lHaltX7 zkf{$YbRrd#EM}91%fgg}9dR>TmmG+a+(#!CbCsOO6$=F|t*D=NqZX<3;7)>-LEubUj;_bx5Fi*&kzBRjJ|sQ)KLwwh`5eSPRSn&PBmWP#k1=hTUi~X z6tYm*Oz;QMK6Cm=$^u&_o+pw#(qP(xW~gaTV5?Z$X%m1I6UF;JClE0k?AApe{20#g z!FgkWbaB=oUhqJ6a9I0&m-INq4C%@xp z6I4cryM8Xbh+Q~}qcXH};wk)e$$>UloB);?aO6=S$-@!4Su3WJGvmf1ZccA|cEwRS z-l-M~E-HuVdyTnWcE^z7?>puJ^xblpaoU^exzQ-_5)Am-aldqZsJKgZZy-l9E!OE1lM&$&73r1-d@!gj9$bw11p6GtG93;V zD}Iv1zeynz$fs2r^r7A%eZa0mSkn^MwNARyQH>g>xvX&;W{btOi<@k}?YRQa4Q0cx z`eu>X%@giyC*LEya>@33I5~7_8em)eFh+eR`GkB{R`}kUXq}ixr(tJI&|)cy6Gr0> zK~hK2-N2ir7L`@%l7UTYox*AYnOl4r4ms{NlDGulhRB^Iz^q!?cY|p&^X-s0aOZf)?0|6m{0|7Do zPsXH*ovDMN-H*eurJ;kJ>#q}Xf})1~iV*U5P#%HkOw}v`8Uq^{L0uonXY@BkP(&rh&Z>tVG4!oA; z-oHFwFnTL_#Q28;pj2$7yJ~!80gb^7ycPD+0lJA>BB6_v1FRVP7*@8*#)AyAY#PR@ zIwm$wX}U363gc&V)b!}-mJGY-PV6fH8w~-E7Wr~kk|LCq^JQI|S*~Vlq%yZpI2KLw zTiKrEy2AH<@8)GnZvmXmZJ)d!UFF^7Vrp z>92=0y%uMeL{=gwgZCOmO*>1z+%{w7)-?@PMsD5v)_bmP!OFB7w0HNEHuh={)`U*z zP&N|jy2evew$-;#R&3g%xFSDbUEsXmjb%ppoV>G;RPVZ)AL>dgU+;NewBt@$)15VM zFGzN!u^C$%4fB=8t{M|VWL#3SfV1+8nLI*^t5r+aoXhhA(Q`m)* z50gHlFdKwhY_W~uD3c>3Orr50i+S?S>Fz+PDQ!p8k4zlq$Hx^UKL_asM0X8LG8 z;9inNH}xz+200%pMvX? zHY>6U*q+M_<{Yx}o?-_4fsV3DEZ#U0t=;DeU>eIMr_Kd6P!$<5_^1+lbzX`` zkcJs%Iy4~0-QDP2QkH>eBhcxfIRfFL&PS7-fnWpZ{2aT}0UR&soTX5g|-_YzlCi8R`WZ~^dw_Ate>qA?|7rX%fr&32EPV}z7`nl>r zfq=;VKPWZ*&og3zqNVJN4l?%|^qNtEPnI{nHE$@JsXqcsRp#3`3es#Rh@I z3}}?ua@gGXcY6+0@vCCd`5H?r)9j7&#Bg!9&j*Z0v*s)0CoEyqhlcLw#H+03DI!zk zya$_b?<#FBddsNGS%*dBWi8R>9W~?^q}5FmX{4D|6jyYbn-8a**&T+{jw3PY=k#b} zYZzA4d8`hNlxrR2(3jxt=wrl1$N22-mEbV?_FK_Px~JxcA}zaYsNrf7_s zogzFwK|TBi8>Cou_B6RTQNk@muxeh^%~N4v7`yp|c$*GTIlFXZlAMJc{`^>VlT~^adJk2tDYgzKOf4YXcA33D%i)8Ro zUJ-S{D3C6dAO|+jYPV%K3nJxeuXm;BX5>e3uTIB7+Iv|S zt|RLUYDEKJack)-Vl1<1(b!6HUU6+{FflOM)+n2DfFPT}!fj@wt-7B9(JK*{_$MLH zpiD2C*_tHvvjO}q_@v9rz z270-fwYOVi%Bh2v^kNnfuyxduv(M2mf*1KfQQ2zt`H} zrJ!PN@{i$1t)#IChY5#~g2C?`>>ljw?}Rg;r?>GImjP489|KkFg6XA(i~Y;R{?oHq zyD{8d`RZ9@dEMFZ|7mvr+QG03>O zc#+#vK6p(Lp=Y_TsfJFn3czRM#3c)gRRJT|$8(*3wIU-~>^l~?WHAt?xG8?`N=~Be zWlMdRy#a}7COH6${0Umibg051dLSJb+7oWSnlIU-gRxtO8lmDQRj*?m5D`rGl{Ay? zT36d&isF;k#@+t+Go#bZWV)vz;zq7GYnT_K@1eGR9uW+!6FvKj6DH7L?>j42y(vc) z=)Ti4Y}!2cYwGxLqpDT=zY*DRx8R`y8lrU~`QV2x&aHw7lbkg8>}fYb(xe>{Hp3~a z6k>?WcKSlXO%E|lWb+IvC-N+RG zb+JVZbsZe-3Os%c{T=jF=89sC`tCJ$Cy@hyoxz6f0`ov6uhiDK!OlbrZ z)G^}EZdju10QG4{((fu}Or#zc?=GSk+831H<^l7rw(*{QI{4;z|1@#?9;kAPPOeiA z0W&c)xsM7*31@`E3`T_af@>UHU(XZPkE=x$dN%ve= z@#$F;ZAiEhhJ`XT97(`|2~#oWvvTbtmygGI6DwcBaVx~~%^L~b$leO)=Z4$fqoQ<&C-iR&pi&fIXcslQO-}98XW}BY4 z#(juQPt83oqIeX6#y1h6EI!9qBlZy=9N2YwKsT0$|5FsPJ#oaoY}J1MyWRHKgaP8y zIAR~e?Gl9MNQ#=_AxkNJu;4oXHlb#5hD&tT%TKX)FeuAPwbHT2k$13hO%sN>m5zJMW(Pv0C{+Q?Q9|f|e&$*Lxq>x-lULB;4vI%aw7{!Tm*ssO%Jjs8x#_}vS z##_II3y%E|;?}qj2+V@*pu=>xWc&JWr5;^oY+D^uIlds9yHKQL*)rwy zDwpHk+3eAR;|e>NZ8?}b2Ce%V0o$Q;eU7|$Z{{);n1sA%$oaumCx(!=JFM6RrLy?5 zwn{1M7nd2Ih6`}!XL(rb(k)pym=Qla#=3tWEMaW|odlYqxmw6kYsI*KJHx zzE!|gcGl;Q99Ullf~d`P$!Sd0kLzTaNUtp~_ea0~0!xFCM|}(Gv1RBBIsS$n3KK+} z%8v$_rC=HDV&19lmFt*W<2f%+1w4)WJDBWX;U{T5fJ?0 znL1>}{i_r8Gp$>Wy^hs47gH1|%uUax1*9`5R|?ToP)6_rRg9abwlQ68x-6F!kS5^F z0xX$o5YQd)H^esarxtfkQ6h~Kr)mzxH`FnHh1%UlqZ4R zg#=HCsd2|j@nVMMwg&p1FSuxm5fE_?AREv#+Y(1*{t#+TI?Lx#3J=#QI}RlqJ1n8 z>RV)cBAQ)8D{xG%@3gpaC3#2p;2CJ(a%42s5`ggf+5D2=T-rqxv%AD6MU3Gu_S>3u z!aYXMvOQ=vp8_W?nj*w$2t!!Jr-{`7AnbmLIIx`jQKRVmN3-y6V`Q;gQ_b~|S^_0) zD3gM6cajZM2}?4dqT!={wtkbbowwB zXli3``Ifq7p?LP_lnwLUfB?1WQrB?FGNHnfhVkcSXwR+va^_Ew9(Ma_ zzSk6N+Gu6H7_o>f)v$w@7Y^JO-Kd3Q>eBXb0Ek>Ywc4vdgDfT@@n;SLfx%7rgg0gq z>SdX>S9u6dLKL4O;jF#y@34(umN#BF=%B}Ad7c9&0(TpN{J=u`7TGtsX5!3Ks=SE&1(NL2J%5vkUaE?g2jR2_q)$ z)!DFVdo4A6a%4`z#iSn5hjoM$Wn{R{^XUp&+G_Ik^#x^Ko^d);Hm1xb?fX&0!MTZ1 zw|*76-5n~t?9B`NGIP?O0Gz|8&#Prsv`{_K%1`-v#df_*YzBLgD)Ni9SFt+L<(Sm8 zh6{9H;Vi}BczfpBI)1pkrDX@C_IpcBUFysj5jsmUxZBWy^Cytp>0SD0!J#@mdTw(y z#NiS1^l^aFXS(n;H*uwl@DB?W*k%r47;T97%kK+Z-XC5)a6TcYno8|hRRbxJ z^D~bNz@n&29&@CRb-2wEgxfoy$dWy^0OBv1 z?Q%psfPT>Lu}s~z91s2Y`GgLUaL`QA-pvVQXNF8DTAxd1S3kFlu6PQE|BQYY(hMp} zw?^lEO=B`)R)oXn#b(}*13I6~tWxJ)|mvQ$;7Pxil%zu)`(BB0dyP6;bAie8O@?67R60i@wJ24N;XHz=&#T zOutE^m~0StV)fl27;^uD*_mk}#g25(d+Hgcb1VwNou?EL?WU+4zJ^KpMl+~)U2S-k zC)fd@JMjB9pUjPr&zKb``=ko>t{cKTB)-$yPK66|vz22#&Dwoa+6_oWY&Ow2Ee5lrIv^$CAnXj4d{>NVil>&vgzxj#6FL42YG5f>y)_(!0x&lpW^} z3uBMC9%!OASdrUKM$5DtpMEsshDSca{5^|5#a?Yn1mrD4TQmJ(Y zYF6t!c`d6=2-LcZ+6jDNUg&iuqatx3NNl6(9{w!HTi5cV`&{4yY8Ph>0xU@E9A_Zo zDI8V_N6_V)TEV3ztVaQfnXRPD=A#x){dD`yc=$ZdXCA1e{YjDMeq9&b0(d;3)wOD* zxMaSf^q{hc2MV?iv97~OA;Uh@NX1Y`Q1f+xQ@G@M=T30eO;yE*db9yQ(B2o`jR;MSP!^gMZdw_n+k_ja=7z3}?yxp<4!eKk9CA&}aKXd<{AM-%V2cQK zA&N%Um|)@NTnKg3IweL`kAPOUer*=ow&ZJ2#M0-otuiJl=V~tH7THez_|ldoaO|pR zHsqi@LN#n#7V*N>Fg7xM6y(Wfs^klDg^hGtc5@|-wh>bzMtaLN zvJzN^vR2OzQ7AUlX{wa>=1Zp3E$ft9%1~$wmM-@AmUw+^WU*OZIzW~GUC^w-IEhoS@( z;8flqdwtHA>;uM;2OHlqJAj<3Q-Xq`1kw9qqYUw=c$6WVWGR*J7_&PX9VIT{ZkmY0 zl@zI?nopaVnB}c6jcRhRavUkcB@Qf(mLwD4QK^=NbTu4k740xY071O8!+^z#m?wV^ z;#1aQb5@+AT)vCXKJeK6)lA?tF~qTkP<`bp{^)Hn^s3Z4)ly$C(&@(H3mOr1C41#n z>qPnxaz)Vhk}XZgV09m94DUZdvX^$KL`6Z^3xivba=^`urN}F%eq&1YIBF)~R6b(6 ztnRm0a+VfMR7&kNIq&5x&IDqAcr#zkpZt*#yZa&TamP)8g<5xCDc3*$MMN;!bF1Yb z;hHw7eO|^Z5rXQx_XK5f!r7m$6V1q*lLtiBkL%Pn-=W15{A-^yUf@H@0TeQNb3Zpc zmoMEYP9t8I5NTB$q)W$?^UBV_s?{~dg8QzU#}3`zF_V#IMjyDyC_7ByFch?mF~ZI` z8@IQ~Ff6r-s_qxu1<+NJrIvHC1mB;ya;vYis8}VyGDeWKWqO`{UmIV5D z=J)?Q^B+JouRt^wrh0#k1Of;vIEP0{rUwe|)yrOt`s!@^zk}IWThh8%TJ))|*sZX@ zd)}+qJktuuOcxLI*ljP1&xGT+Q?|@Bzz7K-BO`7C;TztcwBYl>6AM48A4t0ckK^hj zK?~<^V#OA1Rt%;*pW2iwy86obn0E_kZW~Ao&@wo9I)?E0U)y+@aLJw#JFc&svaGgS zKd+A+h#qE+gn@#fx`?DGCX?)5;6vbV3$YwSf6@_VckgxTiWkjIp2KUO=$Po?Ou_93 zuM$4Ri|A{HGBy=Pga-&WMg1nx^)q&RK0SsY$4cB$OG^w8wPuPiyX9ow5wKc4GR#2QoWZexgeGLNDaVK)?|mgC9a9#*s#8P*2Y8XwQ9 zbK_G=Eex!I?1Z->_}zAWr6g04=o$HYbO!@T(#uVhA+3E)N;6dm3FzRyy=AuYdNK+S z7Kx`{*=T1c8KLwOs0iK{c)2V0C*hj&TR0s%SfWoipmOee~yok*IO8e(EM0btrus;=ATAlZpEuj5@*50N!T zgHa0KP+zE6FiVG)0B>`UO-PTO$Y@zBq4K-!vF`IxwY z97md1C1-BjTU=`Vj7oMZ={tS8x>kd(ANib5S*AHA*`*=k;7U-Qv@bW%4!Q#9VR*Lu zL`jfw8MP{WmMS6=88Xxes2B3VRW>-$J9LnlEX5B%2F^+?)NvWe7O@Qgs_!41=#nj3 z=Yi^x)IP_Bq##J0Wkcc7+yQHCUwuy8qz6kvI$GeuxlaC z(ZQ{PcQ)nTq9Gag)=e9#9TY}ZWbeb%*cLX-xa*B|_l)_XXQu(68_hyAVOI5URpe`( zge#$_@NTe~rtZfYK983-E6`W+pBxxk5#iixN zN)#`osU^pD0C!^(zzkFC=~@EF;V>|;O~Zh&P{!+P3)tIm2fuIF zz`oqif{oK*SCY_N3KrL4)3AohwI06^{$6GAqYmR| z`_Xa7>+R2~j9)|jy>jD6UB=J$gJbLU_6NtWDvf{U{86Xzv;E+Nel_m?o%830{U`U& zaMtg28-McW`LO>N?*CH7@oVZo0e{cD{{=Ys8ZrBQIR66tk39U}@qSOq{)PAQY8?Dm zyx$YFe~0`%G3OVg)awKMN63Fn)A=3$_Z)#=_yn)TLjN279~lF`gZ>^>{RJw7_79*x z?e^b+eh*;&0wP5J2cUloXa0`%dxY#4+Pl{r`oGWhAL3=d!~Pyd`31|5{oi0;bEkf+ z`o9NNeuw=1xbqA03;BP8{9~lQKg7RVx<72{pY4az%~Jl`E8VpYVA;VgGmVKP>WpUzZ;x ncfW5szxw!2_kW(ik3N2FL2{CyU_aoHUw`0V??&l={Pq6;Ep^0c diff --git a/lib/mapfish-geo-lib-1.3-SNAPSHOT.jar b/lib/mapfish-geo-lib-1.3-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..1afc4e44be4723c713ed37a0691ae920ca8678ff GIT binary patch literal 14383 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 org.mapfish geo - 1.2-SNAPSHOT + 1.3-SNAPSHOT system - ${project.basedir}/lib/mapfish-geo-lib-1.2-SNAPSHOT.jar + ${project.basedir}/lib/mapfish-geo-lib-1.3-SNAPSHOT.jar diff --git a/src/main/java/com/infochimps/hadoop/pig/geo/GeoFeature.java b/src/main/java/com/infochimps/hadoop/pig/geo/GeoFeature.java index 04b522a..b89d5b1 100644 --- a/src/main/java/com/infochimps/hadoop/pig/geo/GeoFeature.java +++ b/src/main/java/com/infochimps/hadoop/pig/geo/GeoFeature.java @@ -35,6 +35,33 @@ public String serialize() { return stringer.toString(); } + // If this looks disgusting to you, thats because it is. + public String toIcssThing() { + JSONStringer stringer = new JSONStringer(); + MfGeoJSONWriter builder = new MfGeoJSONWriter(stringer); + try { + stringer.object(); + toJSON(stringer); + if (getFeatureId() != null) { + // Add md5id + stringer.key("md5id").value(getFeatureId()); + } + + // add weird 'geo_geometry_type' key + stringer.key("geo_geometry_type"); + stringer.value(geometry.getInternalGeometry().getGeometryType()); + + // Add coordinates + builder.encodeGeometryCoordinates(geometry.getInternalGeometry()); + + stringer.endObject(); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + return stringer.toString(); + } + public String getFeatureId() { return id; } diff --git a/src/main/java/com/infochimps/hadoop/pig/geo/GeoJSONToThing.java b/src/main/java/com/infochimps/hadoop/pig/geo/GeoJSONToThing.java new file mode 100644 index 0000000..5cdfc50 --- /dev/null +++ b/src/main/java/com/infochimps/hadoop/pig/geo/GeoJSONToThing.java @@ -0,0 +1,56 @@ +package com.infochimps.hadoop.pig.geo; + +import java.io.IOException; +import java.util.HashMap; + +import org.apache.pig.EvalFunc; +import org.apache.pig.data.Tuple; +import org.apache.pig.data.DataBag; +import org.apache.pig.data.TupleFactory; + +import org.mapfish.geo.MfGeo; +import org.mapfish.geo.MfGeoFactory; +import org.mapfish.geo.MfGeoJSONReader; +import org.mapfish.geo.MfGeometry; +import org.mapfish.geo.MfFeature; + +import com.vividsolutions.jts.geom.Polygon; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.Point; +import com.vividsolutions.jts.geom.Coordinate; + +import org.json.JSONException; +import org.json.JSONObject; + +/** + Given a geoJSON feature, mangles it into an ICSS 'Thing'. + */ +public class GeoJSONToThing extends EvalFunc { + private final MfGeoFactory mfFactory = new MfGeoFactory() { + public MfFeature createFeature(String id, MfGeometry geometry, JSONObject properties) { + return new GeoFeature(id, geometry, properties); + } + }; + + private final MfGeoJSONReader reader = new MfGeoJSONReader(mfFactory); + + private static final String PERIOD = "\\."; + private static final String GEOJSON_ID = "id"; + private static final String GEOJSON_TYPE = "type"; + private static final String GEOJSON_FEATURE = "Feature"; + private static final String GEOJSON_GEOM = "geometry"; + private static final String GEOJSON_PROP = "properties"; + + public String exec(Tuple input) throws IOException { + if (input == null || input.size() < 1 || input.isNull(0)) + return null; + + String json = input.get(0).toString(); + String result = null; + try { + GeoFeature feature = (GeoFeature)reader.decode(json); + result = feature.toIcssThing(); + } catch (JSONException e) {} + return result; + } +}