একটি নির্দিষ্ট জিওজেএসন ফাইলকে সঠিক ফর্ম্যাটে ফর্ম্যাট করুন


9

আমি এই জসন ফাইলটি ব্যবহার করতে চাই এটি এখনও কোনও জিওজেএসন ফাইল নয় তবে আমি লক্ষ্য করেছি যে এটিতে বেশ কয়েকটি বৈশিষ্ট্য রয়েছে এবং এটি বিভ্রান্তিকর বলে মনে হয় one আমি জিজ্ঞাসা করতে চেয়েছিলাম যে আপনি যদি এমন কোনও সরঞ্জাম জানেন যেখানে আমি সমস্ত বৈশিষ্ট্য / বৈশিষ্ট্য সংগ্রহগুলি একটি বৈধ জিওজেএসন ফাইলের সাথে একত্রী করতে পারি যাতে আমি ডি 3.js এর মতো ব্যবহার করতে পারি? আসল ফাইলটি এখানে রয়েছে এবং আমি ইতিমধ্যে এমন জিনিসগুলি থেকে মুক্তি পেয়েছি যা জিওজসনের জন্য প্রয়োজন হয় না।

জিওজসনের একটি অংশ এখানে দেওয়া হয়েছে, এটি মোটামুটি বড় তাই আমি কেবল একটি স্নিপেট

{"points": [{
        "type": "FeatureCollection",
        "features": [{
            "type": "Feature",
            "geometry": {
                "coordinates": [41.9773865, 36.3372536],
                "type": "Point"
            },
            "properties": {
                "attacks": 1,
                "location": "Sinjar",
                "date": "2015-10-16"
            }
        }, {
            "type": "Feature",
            "geometry": {
                "coordinates": [43.4873886, 34.9301605],
                "type": "Point"
            },
            "properties": {
                "attacks": 2,
                "location": "Baiji",
                "date": "2015-10-16"
            }
        }, {
            "type": "Feature",
            "geometry": {
                "coordinates": [42.4509315, 36.3707008],
                "type": "Point"
            },
            "properties": {
                "attacks": 3,
                "location": "Tal Afar",
                "date": "2015-10-16"
            }
        }, {
            "type": "Feature",
            "geometry": {
                "coordinates": [43.76667, 35.31667],
                "type": "Point"
            },
            "properties": {
                "attacks": 1,
                "location": "Hawija",
                "date": "2015-10-16"
            }
        }]
    }, {
        "type": "FeatureCollection",
        "features": [{
            "type": "Feature",
            "geometry": {
                "coordinates": [43.7820587, 33.3516083],
                "type": "Point"
            },
            "properties": {
                "attacks": 4,
                "location": "Fallujah",
                "date": "2015-04-24"
            }
        }, {
            "type": "Feature",
            "geometry": {
                "coordinates": [43.2637405, 33.4324112],
                "type": "Point"
            },
            "properties": {
                "attacks": 1,
                "location": "Ramadi",
                "date": "2015-04-24"
            }
        }, {
            "type": "Feature",
            "geometry": {
                "coordinates": [43.1170998, 36.3246002],
                "type": "Point"
            },
            "properties": {
                "attacks": 5,
                "location": "Mosul",
                "date": "2015-04-24"
            }
        }, {
            "type": "Feature",
            "geometry": {
                "coordinates": [38.3535004, 36.8908997],
                "type": "Point"
            },
            "properties": {
                "attacks": 4,
                "location": "Kobane",
                "date": "2015-04-24"
            }
        }, {
            "type": "Feature",
            "geometry": {
                "coordinates": [42.4509315, 36.3707008],
                "type": "Point"
            },
            "properties": {
                "attacks": 1,
                "location": "Tal Afar",
                "date": "2015-04-24"
            }
        }]
    }, {
        "type": "FeatureCollection",
        "features": [{
            "type": "Feature",
            "geometry": {
                "coordinates": [43.7820587, 33.3516083],
                "type": "Point"
            },
            "properties": {
                "attacks": 1,
                "location": "Fallujah",
                "date": "2015-09-09"
            }
        }, {
            "type": "Feature",
            "geometry": {
                "coordinates": [43.2637405, 33.4324112],
                "type": "Point"
            },
            "properties": {
                "attacks": 3,
                "location": "Ramadi",
                "date": "2015-09-09"
            }
        }, {
            "type": "Feature",
            "geometry": {
                "coordinates": [41.9773865, 36.3372536],
                "type": "Point"
            },
            "properties": {
                "attacks": 1,
                "location": "Sinjar",
                "date": "2015-09-09"
            }
        }, {
            "type": "Feature",
            "geometry": {
                "coordinates": [43.4873886, 34.9301605],
                "type": "Point"
            },
            "properties": {
                "attacks": 1,
                "location": "Baiji",
                "date": "2015-09-09"
            }
        }, {
            "type": "Feature",
            "geometry": {
                "coordinates": [42.4509315, 36.3707008],
                "type": "Point"
            },
            "properties": {
                "attacks": 2,
                "location": "Tal Afar",
                "date": "2015-09-09"
            }
        }, 

কীভাবে এই সমস্যাটি সমাধান করবেন এবং একটি সঠিক জিওজেএসন ফাইল পাবেন সে সম্পর্কে আপনার কিছু ধারণা আছে?

উত্তর:


10

পাইথনে আপনি একটি সাধারণ স্ক্রিপ্ট লিখতে পারেন (উদাহরণস্বরূপ) যা আপনার জন্য ডেটা প্রক্রিয়া করবে।

import json
from itertools import chain

ফাইলটি খুলুন এবং পাইথন অভিধানে ডেটা পড়ুন:

isil = json.load(open('isil.en.json'))

পয়েন্ট অবজেক্টটি কেবল বৈশিষ্ট্য সংগ্রহের একটি তালিকা, যাতে আপনি itertoolsসেই সংগ্রহগুলির বৈশিষ্ট্যগুলি একসাথে চেইনে সহায়তা করতে পাইথন লাইব্রেরিটি ব্যবহার করতে পারেন :

features = list(chain.from_iterable(fc['feature'] for fc in isil['points']))

এবং শেষ পর্যন্ত একটি ফাইলের সমস্ত 2818 বৈশিষ্ট্য সহ একটি নতুন বৈশিষ্ট্য সংগ্রহ লিখুন।

feature_collection = {
    "type": "FeatureCollection":,
    "features": features
}

with open("isil_points.geojson", "w") as f:
    json.dump(feature_collection, f)

এবং এটি আপনার পছন্দসই একটি সিস্টেমে লোড করা সক্ষম হতে হবে। ডেটা দেখার জন্য আপনাকে সম্ভবত কিছু ম্যানুয়াল পরিষ্কারও করতে হবে (কিছু "মোট" অবস্থান এবং কিছু পয়েন্ট যার কোনও অবস্থান নেই) তবে এটি একটি শুরু হওয়া উচিত।

বৈশিষ্ট্য সংগ্রহের প্রতিটি থেকে পয়েন্টগুলি একত্রিত করা হয়েছে।


7

এটি একটি "অনশট" হওয়ায় আপনি এটি ম্যানুয়ালি করতে পারেন (নোড দিয়েও চালানো সম্ভব)

আপনার ব্রাউজারে একটি জাভাস্ক্রিপ্ট কনসোল খুলুন।

অ্যারের অ্যারে পেতে আপনাকে লুপ করতে হবে Feature(কারণ প্রত্যেকের FeatureCollectionএক বা একাধিক রয়েছে Feature)

তারপরে, আপনি অ্যারের অ্যারে রূপান্তর করতে সমতল ফাংশনটি ব্যবহার করবেন ( https://stackoverflow.com/a/15030117 থেকে ধার করা একটি পুনরাবৃত্ত ফাংশন )

পুরো কোডটি নীচে রয়েছে (ফাইলের সামগ্রী ব্যতীত, জিনিসগুলি পড়ার জন্য সম্পূর্ণ নয়)

// Copy/paste the text from you source https://raw.githubusercontent.com/RitterLean/Geojson/master/geofile.json 
content = {
"points": [{
    "type": "FeatureCollection",
    "features": [{
        "type": "Feature",
        "geometry": {
            "coordinates": [41.9773865, 36.3372536],
            "type": "Point"
        },
        "properties": {
            "attacks": 1,
            "location": "Sinjar",
            "date": "2015-10-16"
        }
    }, {
        "type": "Feature",
        "geometry": {
            "coordinates": [43.4873886, 34.9301605],
            "type": "Point"
        },
        "properties": {
            "attacks": 2,
            "location": "Baiji",
            "date": "2015-10-16"
        }
    }, {
    ...
    // Be careful, incomplete because shortened for illustration 

intermediate_result = content['points'].map(function(el){
    return el.features;
});

function flatten(arr) {
  return arr.reduce(function (flat, toFlatten) {
    return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten);
  }, []);
};

geojson_output = {
        "type": "FeatureCollection",
        "features": flatten(intermediate_result)
}
// Transform the object to a string you can paste into a file
console.log(JSON.stringify(geojson_output));

ফলাফলটি http://geojson.io/#id=gist:anonymous/da10ab9afc9a5941ba66&map=4/19.48/22.32 এ দেখা যাবে

আপনি দেখতে পাবেন যে কিছু ফলাফলের ভুল স্থানাঙ্ক রয়েছে (0, 0)। এটি মূল বিষয়বস্তুর কারণে।

এই ডেমো থেকে আপনি জিওজেএসনেও রফতানি করতে পারবেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.