2016-01-21 7 views
6

से kml उत्पन्न मैं गूगल मानचित्र पर KML पैदा करने और डेटा प्रदर्शित करने के लिए PHPShapefile लाइब्रेरी का उपयोग कर रहा हूँ, लेकिन जब यह 'प्वाइंट' की बात आती है को आकार अपने काम नहीं कर रहा और उसी के लिए एम एल उत्पन्न नहीं कर पाया। पॉलीगॉन आकार के लिए कोड स्निपेट यहां पॉइंट आकृति के लिए बनाने में मेरी सहायता करता है।पीएचपी - 'प्वाइंट' आकार

//this shape data i'm fetching from shapefile library.   
$shp_data = $record->getShpData(); 
if (isset($shp_data['parts'])) { 
    $counter1 = 0; 
    if ($shp_data['numparts']) { 
    $polygon_array['polygon']['status'] = 'multi-polygon'; 
    } else { 
    $polygon_array['polygon']['status'] = 'single-polygon'; 
    } 

    $polygon_array['polygon']['total_polygon'] = $shp_data['numparts']; 

    foreach ($shp_data['parts'] as $polygon) { 
    foreach ($polygon as $points) { 
     $counter = 0; 
     $polygon_string = ''; 

     while ($counter < count($points)) { 
     if ($counter == 0) { 
      $polygon_string = $points[count($points) - 1]['x'] . ','; 
      $polygon_string .= $points[$counter]['y'] . ' ' . $points[$counter]['x'] . ','; 
     } else if ($counter == count($points) - 1) { 
      $polygon_string .= $points[$counter]['y']; 
     } else { 
      $polygon_string .= $points[$counter]['y'] . ' ' . $points[$counter]['x'] . ','; 
     } 
     $counter = $counter + 1; 
     } 
     $polygon_single[$counter1] = $polygon_string; 
     $polygon_array['polygon']['view'] = $polygon_single; 
     $counter1 = $counter1 + 1; 
    } 
    } 
    $arr[$i] = $polygon_array; 
    $i++; 
} 

उत्तर

1

इस हालत बिंदु ज्यामिति के लिए असफल हो जायेगी:

if (isset($shp_data['parts'])) { 

दुर्भाग्य यह है कि तरह लग रहा है आप उपयोग कर रहे ज्यामिति प्रकार की पहचान करने के लिए एक उचित तरीके से नहीं है शेपफ़ाइल पीएचपी पुस्तकालय।

समाधान के लिए, अगर इसके बाद के संस्करण की जांच में विफल रहता है, तो आप देख सकते हैं कि ज्यामिति एक x और y इसलिए की तरह समन्वय है:

if (isset($shp_data['parts'])) { 
    // probably a polygon 
    // ... your code here ... 
} elseif(isset($shp_data['y']) && isset($shp_data['x'])) { 
    // probably a point 
    $point = []; 
    $point["coordinates"] = $shp_data['y'] .' '. $shp_data['x']; 
    $arr[$i]['point'] = $point; 
} 

यह एक सरणी है कि कुछ इस तरह दिखता में परिणाम चाहिए:

[0]=> 
    array(1) { 
    ["point"]=> 
    array(1) { 
     ["coordinates"]=> 
     string(34) "0.75712656784493 -0.99201824401368" 
    } 
    } 
+0

क्या आप इसके लिए कोई वैकल्पिक पुस्तकालय जानते हैं? – Rorschach

+0

@Rorschach no, क्षमा करें – chrki

संबंधित मुद्दे